//观察者模式 /** * * 大概意思就是,当一个事件的状态发生改变以后,通知其余依赖的事务。 * * 通常的作法是代码下面直接撸代码, 这样的很差的地方就是,没增长一个依赖都须要对下面增长,接着更改。 * 逻辑多了,就会很长很长。固然大部分会每一个依赖业务封装到一个方法中。若是模块太大可能就拆分作队列了。 * 其余依赖直接消费队列就能够了。 * 如今有一种模式能够解决这种方法。 * 大概就是下面代码的样子。 * Class upload */ class upload{ public $_obervers = []; /** * 增长订阅对象 * @param $object */ public function register($object){ $this->_obervers[] = $object; } /** * 触发器 */ public function trigger(){ if(empty($this->_obervers)){ return; } foreach($this->_obervers as $obj){ $obj->execute(); } } /** * 具体操做事务 */ public function htm5toxml(){ echo 'upload is end'; echo "\r\n"; $this->trigger(); } } class a{ public function execute(){ echo 'this is a execute'; echo "\r\n"; } } class b{ public function execute(){ echo 'this is b execute'; echo "\r\n"; } } $upload = new upload(); $upload->register(new a()); $upload->register(new b()); $upload->htm5toxml();