开发者社区> 技术小美> 正文

php设计模式--观察者模式

简介:
+关注继续查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
*
* 被观察者
*
*/
class Subject implements SplSubject {
protected $_value;
protected $_observers;
/**
* 构造函数
*
* @return void
*/
public function __construct() {
$this->_observers = new SplObjectStorage();
}
/**
* 追加观察者
* @see SplSubject::attach()
*/
public function attach(SplObserver $observer) {
$this->_observers->attach($observer);
}
/**
* 抛弃观察者
* @see SplSubject::detach()
*/
public function detach(SplObserver $observer) {
$this->_observers->detach($observer);
}
/**
* 通知观察者
* @see SplSubject::notify()
*/
public function notify() {
foreach ($this->_observers as $observer) {
$observer->update($this);
}
}
/**
* 设置最新值
*
* @param mixed $value
* @return
*/
public function setValue($value) {
$this->_value = $value;
$this->notify();
}
/**
* 获取最后更新的值
*
* @return mixed
*/
public function getValue() {
return $this->_value;
}
}
/**
* 观察者
*
*/
class Observer implements SplObserver {
/\**
* @see SplObserver::update()
*/
public function update(SplSubject $subject) {
echo 'i know you '.$subject->getValue();
}
}
header('Content-type:text/html;charset=utf-8');
date_default_timezone_set('Asia/Shanghai');
error_reporting(E_ALL);
$subject new Subject();
$observer new Observer();
$subject->attach($observer);
$subject->setValue('updated');

























本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1286698,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
php设计模式-简单工厂模式 (Simple Factory)
简单工厂模式又称为静态工厂方法模型,它属于类创建型模式,简单工厂并不属于23种设计模式,刚开始学习设计模式的同学,对简单工厂模式、工厂方法、抽象工厂中的工厂一知半解,其实白话点来说:这些模式一定会有一个工厂类,子类并不需要知道工厂细节,只需新建工厂创建产品即好。
53 0
PHP常用设计模式
PHP常用设计模式
60 0
php设计模式-工厂模式
php设计模式-工厂模式
17 0
php设计模式-注册器模式
php设计模式-注册器模式
59 0
php设计模式-单例模式
php设计模式-单例模式
28 0
【PHP-设计模式】职责链模式
【PHP-设计模式】职责链模式
54 0
【PHP-设计模式】观察者模式
【PHP-设计模式】观察者模式
65 0
【PHP-设计模式】工厂模式
【PHP-设计模式】工厂模式
62 0
【PHP-设计模式】单例模式
【PHP-设计模式】单例模式
55 0
+关注
技术小美
文章
问答
视频
相关电子书
更多
PHP 2017.北京 全球开发者大会——高可用的PHP
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多