观察者模式

jianbing123 2019-12-24 原文

观察者模式

观察者模式用于监听关联类的行为,如果有所异常并作出回应;

<?php
    //观察者模式:一个类的行为(方法)被另外一个类的行为(方法)所观察甚至限制

    //男人类:大丈夫有两个行为,加入女朋友监察和自行购物行为
    class Man{
        private $observer=array();

        //加入观察者对象
        public function addObserver($observer)
        {
            $this->observer[] = $observer;
        }

        public function buy()
        {
            foreach($this->observer as $observer){
                //在男人购买方法中加入女朋友对象来观察监听男人的消费
                $observer->dongjie();
            }
        }

        //移除观察者
        public function delObserver($observer)
        {
            $key = array_search($observer,$this->observer);

            array_splice($this->observer,$key,1);
        }
    }

    //女朋友类有个自发行为:冻结男朋友的消费卡的行为
    class GirlFriend{
        private $name;
        function __construct($name)
        {
            $this->name = $name;
        }

        public function dongjie()
        {
            echo $this->name."说道想偷偷花钱买东西,没门!<br />";
        }
    }


    $xiaoli = new GirlFriend('小丽');
    //var_dump($xiaoli);die();
    $xiaohua = new GirlFriend('小花');
    $xiaoming = new Man();
    $xiaoming->addObserver($xiaoli);
    $xiaoming->addObserver($xiaohua);
    $xiaoming->delObserver($xiaohua);
    $xiaoming->buy();

code.php

发表于
2019-12-24 22:47 
small-river 
阅读(
评论(

编辑

收藏

 

版权声明:本文为jianbing123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jianbing123/p/12094028.html

观察者模式的更多相关文章

  1. PHP观察者模式与Yii2.0事件

    PHP观察者模式与Yii2.0事件 1、先看PHP观察者模式的实现: 想要使用事件、必须实现事件的基类、统一的 […]...

  2. 观察者模式

    观察者模式简述 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改 […]...

  3. 设计模式第二篇-观察者模式

    设计模式第二篇-观察者模式 一、引言 什么是观察者模式呢?报纸的订阅可以非常形象的比喻出,报社出版报纸,并像订 […]...

  4. 【设计模式】 观察者模式

    1、定义 1.1 标准定义   观察者模式(Observer Pattern)也叫做发布订阅模式(Publis […]...

  5. C++屌屌的观察者模式-同步回调和异步回调

    目录 一、概述 1、同步观察者 2、异步观察者 二、效果展示 三、同步观察者 四、异步观察者 五、相关文章 原 […]...

  6. Observer 观察者模式

    项目:气象监测系统 需求分析::此系统中三个部分是气象站(获取实际气象数据的物理装置)、WeatherData […]...

  7. 设计模式-观察者模式

    模式定义 定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。主题(Sub […]...

  8. 观察者模式 – mingmingcome

    观察者模式 2019年3月25日11:01:22 观察者模式( observer pattern) 写在前面的 […]...

随机推荐

  1. Jetson AGX Xavier/Ubuntu安装QT

    安装QT命令 sudo apt-get install qt5-default qtcreator -y 如果 […]...

  2. 安卓手机添加系统证书方法(HTTPS抓包)

    目录 1. 导出证书(以Charles为例) 2. 安卓证书储存格式 3. 将导出的证书计算hash值 4. […]...

  3. 细数2016年智能家居的那些“入口之争”!

    智能家居在我国的发展已经有十多年的时间,这期间我国的智能家居渡过了概念期、开创期、徘徊期,目前产业已经正式进入 […]...

  4. 通过外网访问内网服务器

    一、可以通过netsh在外网服务器添加端口映射来实现。   1、新增映射 netsh interface po […]...

  5. 2.容器的设计模式

    目录 1.collection接口中的迭代器模式 2.迭代器模式 1.collection接口中的迭代器模式 […]...

  6. dell服务器已有阵列新增的磁盘无法识别显示外来

    问题描述: 今天遇到个插入新硬盘显示外来盘,然后不可用,然后电话问了一下戴尔的工程师 说需要清除一下原来磁盘的 […]...

  7. Linux部署Redis及PHP-redis扩展

    Redis是一个key-value存储系统,属于我们常说的NoSQL。它遵守BSD协议、支持网络、可基于内存亦 […]...

  8. 树莓派连接显示器不亮屏的解决方案

      树莓派一般可以自动检测目标设备的分辨率。但对于部分设备,分辨率可能会明显不对(过大或过小)。这时就需要给树 […]...

展开目录

目录导航