首页 > 学院 > 开发设计 > 正文

观察者模式

2019-11-08 01:12:04
字体:
来源:转载
供稿:网友
<?php// 观察者模式/** * abstract subject */interface Subject{	/**	 * add Observer	 */	public function attach(Observer $obs);		/**	 * remove Observer	 */	public function detach(Observer $obs);		/**	 * notify Observer	 */	public function notify();}interface Observer{	public function update(Subject $sub);}/** * concrete subject */class ConcreteSubject implements Subject{	PRivate $observerList = array();		public function attach(Observer $obs) {		$this->observerList[] = $obs;	}		public function detach(Observer $obs) {		$this->observerList = array_diff($this->observerList, [$obs]);	}		public function notify() {		foreach($this->observerList as $ol) {			$ol->update($this);		}	}		public function doAct() {		echo 'DoAct ... <br/>';		$this->notify();	}}/** * concrete observer 1 */class Observer1 implements Observer{	public function update(Subject $sub) {		echo 'Observer one updated! <br/>';	}}/** * concrete observer 2 */class Observer2 implements Observer{	public function update(Subject $sub) {		echo 'Observer two updated! <br/>';	}}// test code$sub = new ConcreteSubject();$sub->attach(new Observer1()); //add observer$sub->attach(new Observer1());$sub->attach(new Observer2());$sub->doAct();
上一篇:Anaconda使用总结

下一篇:线程锁Lock

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表