php实现观察者模式的方法:首先创建一个PHP示例文件;然后实现观察者向主题注册;最后对注册树进行遍历,让每个对象实现其接口提供的操作即可。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP实现观察者模式

“观察者模式”的观察者三个字信息量很大。玩过很多网络游戏的童鞋们应该知道,即便是斗地主,除了玩家,还有一个角色叫“观察者"。在我们今天他谈论的模式设计中,观察者也是如此。首先,要有一个“主题”。只有有了一个主题,观察者才能搬着小板凳儿聚在一堆。其次,观察者还必须要有自己的操作。否则你聚在一堆儿没事做也没什么意义。

从面向过程的角度来看,首先是观察者向主题注册,注册完之后,主题再通知观察者做出相应的操作,整个事情就完了。

从面向对象的角度来看,主题提供注册和通知的接口,观察者提供自身操作的接口。(这些观察者拥有一个同一个接口。)观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。耦合度相当之低。

如何实现观察者注册?通过前面的注册者模式很容易给我们提供思路,把这些对象加到一棵注册树上就好了嘛。如何通知?这就更简单了,对注册树进行遍历,让每个对象实现其接口提供的操作<?php

// 主题接口

interface Subject{

public function register(Observer $observer);

public function notify();

}

// 观察者接口

interface Observer{

public function watch();

}

// 主题

class Action implements Subject{

public $_observers=array();

public function register(Observer $observer){

$this->_observers[]=$observer;

}

public function notify(){

foreach ($this->_observers as $observer) {

$observer->watch();

}

}

}

// 观察者

class Cat implements Observer{

public function watch(){

echo "Cat watches TV


";

}

}

class Dog implements Observer{

public function watch(){

echo "Dog watches TV


";

}

}

class People implements Observer{

public function watch(){

echo "People watches TV


";

}

}

// 应用实例

$action=new Action();

$action->register(new Cat());

$action->register(new People());

$action->register(new Dog());

$action->notify();

【推荐学习:《PHP视频教程》】

php 观察者模式怎么用,php怎么实现观察者模式相关推荐

  1. java 观察者模式_图解Java设计模式之观察者模式

    图解Java设计模式之观察者模式 天气预报项目需求 天气预报设计方案 1 - 普通方案 观察者模式(Observer)原理 观察者模式解决天气预报需求 观察者模式在JDK应用的源码分析 天气预报项目需 ...

  2. java观察者模式本质_6.[研磨设计模式笔记]观察者模式

    1.定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新. 2.解决问题 --订阅报纸 看起来订阅者是直接根有据打交道,但实际上,订阅者的订阅数据 ...

  3. java设计模式 观察者模式_理解java设计模式之观察者模式

    在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的"观察者模 ...

  4. php观察者模式和注册数模式,PHP观察者模式

    观察者模式的核心是允许你的应用程序注册一个回调,当某个特定的事件发生时便会触发它.实现观察者模式,我们使用一个名为Event的类实现它,这个类有2个公共的方法. 1. registerCallback ...

  5. php观察者模式使用场景,php设计模式系列--观察者模式

    模式定义 观察者模式(observer pattern): 定义对象间的一种一对多(或一对一)的依赖关系,当被观察者状态发生改变时,注册的观察者都会被通知. 观察者模式又称 发布-订阅(publish ...

  6. android观察者模式被观察者,Android的设计模式-观察者模式

    前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: 1.定义 定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新. 2.介绍 观察 ...

  7. python 设计模式 观察者_python设计模式之观察者模式

    说到观察者模式,在我脑海中总是闪现,这家伙跟消息队列的主题发布订阅有什么关系,虽然本人对消息队列没有很深的研究,但是凭直觉我就认为消息队列的实现就使用了观察者模式吧,所以本文就来模拟消息队列的丐版实现 ...

  8. 设计模式:观察者模式--Observer

    一.什么是观察者模式 1.生活中的观察者模式 1.警察抓小偷 在现实生活中,警察抓小偷是一个典型的观察者模式「这以一个惯犯在街道逛街然后被抓为例子」,这里小偷就是被观察者,各个干警就是观察者,干警时时 ...

  9. 观察者模式(Observer)

    观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependen ...

最新文章

  1. Jackson注解学习参考
  2. php去掉两个数组重复数据,php两个数组怎么去除重复
  3. asp:HyperLink中 Eval要用string.Format绑定
  4. 记一次 .NET 某上市工业智造 CPU+内存+挂死 三高分析
  5. 深入剖析.NETCORE中CORS(跨站资源共享)
  6. uboot源码——mmc驱动分析
  7. 广州云栖大会:阿里云携手虎牙,首次落地直播行业边缘节点及云企业网服务
  8. 世界手机号码格式_脑炎康复之旅——世界脑炎日病友征文
  9. jquery无法找到其他父级子集解决方法
  10. 23.多线程 实现的两种方式
  11. 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”
  12. 学计算机科学与技术会特效吗,女生学计算机科学与技术专业会不会很困难?看完你就明白了!...
  13. URL编码 java
  14. [转载] 夯实Java基础系列8:深入理解Java内部类及其实现原理
  15. 特效编辑器开发手记2——cocos2d-x粒子系统的plist文件
  16. 安装oracle数据库过程中系统表空间,Oracle数据库安装及配置
  17. 微信小程序实现抽奖大转盘
  18. Gis系统中常见的格式
  19. 物联网专业有哪些含金量高的比赛?
  20. 人活着,到底为了啥?

热门文章

  1. 飞鸽传书人必须对自己守信
  2. (BCB) CComPtrIHTMLDocument2 FIEDoc;
  3. 商业智能常见名词浅释(转载)
  4. 有2-3年工作经验但依然迷茫
  5. 机器学习算法 随机森林学习 之决策树
  6. 狗狗1岁相当于人类31岁!基于基因组甲基化图谱建立首个跨物种年龄转换公式...
  7. Python跨文件引用模块
  8. M1芯片MacBook Pro/Air能兼容哪些软件?M1 mac软件兼容一览表
  9. MacOS Server安装与应用
  10. 小学奥数_7829神奇序列求和 python