PHP设计模式 观察者模式(Observer)
定义
当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新。
模式要点
Event:事件
Trigger() 触发新的事件
abstract EventGenerator 事件产生者
Function addObserver(Observer $observer) 添加事件
Function notify() 通知事件产生了
Interface Observer 观察者
Function update($event_info=null) 执行一些更新的操作
$event_info 事件的一些信息
代码示例
<?php
/**
* 观察者模式
* User: pyzn
* Date: 2016-03-21
* Time: 17:35
*/ /**
* Class EventGenerator
* 观察者模式的核心,主要是对事件进行约束,保证事件中存在addObserver、notify方法
*/
abstract class EventGenerator
{
private $observers = array(); public function addObserver(Observer $observer)
{
$this->observers[] = $observer;
} public function notify()
{
foreach ($this->observers as $observer)
{
$observer->update();
}
}
} /**
* Class Event 具体事件类,这里映射程序中增加的某个事件
* 其继承自事件产生者基类
*/
class Event extends EventGenerator
{ /**
* 执行一个事件,并进行通知
*/
public function trigger()
{
echo "事件发生<br />"; $this->notify();
}
} /**
* Interface Observer
* 对事件进行约束,保证事件中有update操作方法
*/
interface Observer
{
function update($event_info = null);
} class Observer1 implements Observer
{
function update($event_info = null)
{
// TODO: Implement update() method.
echo "逻辑1<br />";
}
} class Observer2 implements Observer
{
function update($event_info = null)
{
// TODO: Implement update() method.
echo "逻辑2<br />";
}
} $event = new Event(); $event->addObserver(new Observer1());
$event->addObserver(new Observer2()); $event->trigger();
PHP设计模式 观察者模式(Observer)的更多相关文章
- java设计模式--观察者模式(Observer)
java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...
- 设计模式-观察者模式(Observer Pattern)
观察者模式(Observer Pattern):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. 观察者 ...
- 设计模式 - 观察者模式(Observer Pattern) 详细说明
观察者模式(Observer Pattern) 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26583157 版权全部 ...
- 设计模式 - 观察者模式(Observer Pattern) 详细解释
观察者模式(Observer Pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26583157 版权全部 ...
- 设计模式 - 观察者模式(Observer Pattern) Java内置 用法
观察者模式(Observer Pattern) Java内置 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26601659 ...
- 设计模式--观察者模式Observer(对象行为型)
一.观察者模式 观察者模式是在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新.观察者模式也被称之为:主题-观察者模式,发布-订阅模式,前者是一,后者是多. ...
- 大话设计模式--观察者模式 Observer -- C++ 实现实例
大话设计模式--1.观察者模式: 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有的 观察者对象,使他们能够自动更新自己. 使用场合: 当一 ...
- [工作中的设计模式]观察者模式observer
一.模式解析 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 观察者模式又叫订阅发布模式, ...
- C#设计模式——观察者模式(Observer Pattern)1
一.概述在软件设计工作中会存在对象之间的依赖关系,当某一对象发生变化时,所有依赖它的对象都需要得到通知.如果设计的不好,很容易造成对象之间的耦合度太高,难以应对变化.使用观察者模式可以降低对象之间的依 ...
- C#设计模式——观察者模式(Observer Pattern)
一.概述在软件设计工作中会存在对象之间的依赖关系,当某一对象发生变化时,所有依赖它的对象都需要得到通知.如果设计的不好,很容易造成对象之间的耦合度太高,难以应对变化.使用观察者模式可以降低对象之间的依 ...
随机推荐
- dede摘要长度,dedecms摘要限制,dedecms摘要字数
dede摘要长度,dedecms摘要限制,dedecms摘要字数 如果可以有效控制文章摘要的字数,那么就可以使得页面布局很灵活. 在Dedecms中,在列表页调用文章摘要的方法主要有: 1:[fiel ...
- NavigationView更改菜单icon和title颜色变化效果
NavigationView menu默认icon和title会随着菜单状态改变而改变,选择某个菜单后再次打开侧边菜单后会发现该菜单的icon和title会变成应用的主颜色,其他菜单项仍然为黑色. 如 ...
- Oracle:impdb导入
最近有现场给我一份用expdp导出dmp文件,我用imp导入时,报错.因为导出dmp的数据库是11g,导入的数据库也是11g, 但客户端安装的是10g,不能用imp导入:所以只能试着用impdp导入: ...
- 关于encodeURIComponent的用法
定义和用法 encodeURIComponent() 函数可把字符串作为 URI 组件进行编码. 语法 encodeURIComponent(URIstring) 参数 描述 URIstring ...
- HDU 1711(KMP)字符串匹配
链接 HDU 1711 Number Sequence KMP 算法 我以自己理解写的,写的不对,不明白的地方海王子出来,一起共同学习: 字符串匹配 就是KMP,一般思想,用一个for循环找开头 ...
- codeforces 690C2 C2. Brain Network (medium)(bfs+树的直径)
题目链接: C2. Brain Network (medium) time limit per test 2 seconds memory limit per test 256 megabytes i ...
- OpenCV——PS滤镜算法之 Ellipsoid (凹陷)
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...
- LRU原理和Redis实现——一个今日头条的面试题
看了评论,发现有些地方有问题,更新了图和一些描述,希望可以更清晰一些,也欢迎关注,还会有干货文章 -------- 很久前参加过今日头条的面试,遇到一个题,目前半部分是如何实现 LRU,后半部分是 R ...
- B - Soldier and Badges
Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description Colone ...
- (二十八)分类信息的curd-分类信息删除
删除分类步骤分析: 1.在list.jsp上编写 删除连接 /store/adminCategory?method=delete&cid=?? 2.在delete方法中 获取cid 调用ser ...