php设计模式-观察者模式
2018-02-23 14:18
651 查看
在web应用中,通常,一些小范围的数据和业务的改变,其他相关的业务数据也需要发生改变,这种情况,观察者模式很适合。
观察者模式,通常是通过使用一个叫Observer的接口实现的,如果其他的类要引入观察者,就要实现这个接口
比如,有一个这样的需求,如果产品汇率改变了,所有产品的相关页面展示信息和价格计算也跟着改变
观察者模式,通常是通过使用一个叫Observer的接口实现的,如果其他的类要引入观察者,就要实现这个接口
比如,有一个这样的需求,如果产品汇率改变了,所有产品的相关页面展示信息和价格计算也跟着改变
interface Observer { function notify( $obj ); } class ExchangeRate { static private $instance = NULL; private $observers = array(); private $exchange_rate; private function __construct(){ } private function __clone(){ } public static function getInstance(){ if( self::$instance == NULL ) { self::$instance = new ExchangeRate(); } return self::$instance; } public function getExchangeRate(){ return $this->exchange_rate; } public function setExchangeRate( $new_rate ){ $this->exchange_rate = $new_rate; //汇率改变,通知所有观察者 $this->notifyObservers(); } public function registerObservers( $obj ){ $this->observers[] = $obj; } public function notifyObservers(){ foreach( $this->observers as $observer ) { //通知观察者 $observer->notify( $this ); } } } class ProductItem implements Observer { public function __construct(){ //注册成为汇率的观察者 ExchangeRate::getInstance()->registerObservers( $this ); } public function notify( $obj ){ if( $obj instanceof ExchangeRate ) { echo "请更新产品的汇率" . PHP_EOL; } } } $p1 = new ProductItem(); $p2 = new ProductItem(); ExchangeRate::getInstance()->setExchangeRate( 6.2 );
相关文章推荐
- PHP常见的设计模式之:观察者模式
- PHP设计模式之观察者模式实例
- PHP设计模式系列 - 观察者模式处理订单(异步操作附加功能)
- php设计模式学习之观察者模式
- PHP设计模式之观察者模式
- PHP设计模式之观察者模式
- php核心学习-设计模式的学习-观察者模式
- PHP设计模式-观察者模式(订阅者模式)
- php设计模式之观察者模式
- PHP设计模式之观察者模式实例
- 18. 星际争霸之php设计模式--观察者模式
- PHP 设计模式之观察者模式
- php设计模式之观察者模式
- PHP设计模式之观察者模式(Observer)详细介绍和代码实例
- PHP设计模式之观察者模式实现DEMO
- PHP草根论之设计模式-观察者模式
- php设计模式 四 (观察者 原型模式 迭代器模式)
- [置顶] php设计模式之观察者模式