<?php
//观察者模式
//抽象通知者
abstract class Subject {
protected $observer = array() ;
//添加观察者
public abstract function Attach(observer $observer);
//移除观察者
public abstract function Detach(observer $observer);
//通知观察者
punlic abstract function Notify();
}

//具体通知者
class ConcreteSubject extends Subject{
//通知者状态
public $subject_state;
//添加观察者
public function Attach(observer $observer){
array_push($this->subject_state ,$observer);
}
//移除观察者
public function Detach(observer $observer){
foreach ($this->observer as $key => $value) {
if ($val == $observer) {
unset($this->observer[$k])
}
}
}
//通知观察者
public function Notify(observer $observer){
foreach ($this->observer as $key => $value) {
$v->update();
}

}
}

//抽象观察者
abstract class Observer{
public abstract functioin update();
}
//具体观察者
class ConcreteObserver extends Observer{
private $name ;
private $subjectStats ;
//通知者
public $subject ;

public function __construct(ConcreteSubuject $_sub,$_name){
$this->subject = $_sub ;
$this->name = $_name ;
}

public function Update(){
$this->subjectStats = $this->subject->subject_state ;
echo "观察者".$this->name."的新状态是:".$this->subjectStats."<br/>"
}

}

$_s = new ConcreteSubject();
$a = new ConcreteObserver($_s,'a');
$b = new ConcreteObserver($_s,'b');
$c = new ConcreteObserver($_s,'c');

$_s->Attach($a);
$_s->Attach($b);
$_s->Attach($c);

$_s->subject_state = 'xxx';
$_s->Notify();

最新文章

  1. 配置Java EE Eclipse+Tomcat开发环境
  2. php文件删除
  3. VB IE 清除历史记录
  4. 【原创】JPEG图像密写研究(二) 哈夫曼树的建立
  5. (转)openURL的使用方法
  6. C#第七天
  7. ionic2 tabs使用自定义图标
  8. Qt日常备注(函数/接口实现)
  9. Reverse Words in a String III
  10. hibernate 3.6.10 maven pom.xml
  11. 微信小程序:模板消息推送提示{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXXXX]”}
  12. android MultiDex multidex原理下超出方法数的限制问题(三)
  13. Jenkins配置报告与邮件插件
  14. Spring Cloud 入门教程(二): 配置管理
  15. 枚举类型---java基础代码
  16. DevExpress gridcontrol Master-Detail绑定到对象类型
  17. bzoj3862
  18. Java程序设计10——与运行环境交互
  19. Junit4 单元测试框架的常用方法介绍
  20. 1014 我的C语言文法定义与C程序推导过程

热门文章

  1. contos7 安装weblogic10.3 _wls1036_generic.jar
  2. 题解 v
  3. C#简单实现表达式目录树(Expression)
  4. PostgreSQL执行计划的解析
  5. C# 读取保存xml文件
  6. C++ 各种构造函数
  7. JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值
  8. ProjectEuler 006题
  9. Tomcat中的一些问题
  10. MySQL基础2——常用命令