博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
观察者模式(发布-订阅模式)
阅读量:4922 次
发布时间:2019-06-11

本文共 1048 字,大约阅读时间需要 3 分钟。

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时会通知所有观察者的对象,使它们能够自动更新自己。

//主题类 abstract class ObjectEvent {
private $_observers = array(); public function register($sub){
$this->_observers[] = $sub; } public function notify(){
if(!empty($this->_observers)){
foreach ($this->_observers as $observer){
$observer->update(); } } } }
class Event extends ObjectEvent {
public function trigger(){
$this->notify(); } }
#观察者要实现的接口 interface Observerable {
public function update(); }
class Subscriber implements Observerable {
public function update() {
echo '输出结果
'; } }
$event = new Event(); $event->register(new Subscriber()); $event->notify(); 观察者模式的关键对象是主题和观察者,一个主题可以有任意数目的依赖它的观察者,一旦主题的状态发生了改变,所有的观察者都可以得到通知。主题发出通知时并不需要知道谁是它的观察者。也就是说,具体观察者是谁,它根本不需要知道。而任何 一个具体观察者不知道也不需要知道其他观察者的存在。 什么时候使用观察者模式呢?当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式

转载于:https://www.cnblogs.com/paulversion/p/8431374.html

你可能感兴趣的文章
Todo list and 学习心得
查看>>
html笔记1
查看>>
uva10487-最接近的和
查看>>
FPGA--I2C串行通信总线
查看>>
服务器老是出现502 Bad Gateway?
查看>>
博客系统-点赞取消
查看>>
sql 优化(转)
查看>>
Oracle 迁移 序列
查看>>
弹窗组价
查看>>
小程序の填坑指北
查看>>
AutoMutex
查看>>
13 -1 BOM和定时器
查看>>
uuid.go
查看>>
c#中怎么删除一个非空目录
查看>>
selenium java-2 chrome driver与对应版本
查看>>
javascript的私有机制
查看>>
arguments对象疑惑
查看>>
MyEclipse 的代码提示功能
查看>>
作为开发人员,我们实在是太幸运
查看>>
对比<input type="text" id="">和<asp:TextBox runat="server" ID="">
查看>>