PHP设计模式之观察者模式
PHP 设计模式之观察者模式
观察者模式:
将观察者逻辑写到业务逻辑里面去,
适用业务场景举例:
注册用户之后,①通知用户欢迎使用此系统②给推荐人积分③写入日志程序。
适用场景及注意事项:
①一个业务逻辑的对象会引起其他一个或多个业务逻辑,能用于对象之间的通信
②依赖性弱,被观察者里面添加方法用来关联其他对象,关联是在对象外面执行,类的独立性强。
③各个观察者类最好继承一个接口,因为观察者的方法名可能存在于被观察者的方法中。
<?php interface IObserver { function onChanged( $sender, $args ); } interface IObservable { function addObserver( $observer ); } class UserList implements IObservable { private $_observers = array(); public function addCustomer( $name ) { foreach( $this->_observers as $obs ) $obs->onChanged( $this, $name ); } public function addObserver( $observer ) { $this->_observers []= $observer; } } class UserListLogger implements IObserver { public function onChanged( $sender, $args ) { echo( "'$args' added to user list\n" ); } } $ul = new UserList(); $ul->addObserver( new UserListLogger() ); $ul->addCustomer( "Jack" ); ?>