介绍
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
角色
角色 | 说明 |
---|---|
Subject | 抽象目标类,一般至少提供三个接口: 添附(attach) 解附(detach) 通知(notify) |
ConcreteSubject | 具体目标,提供了观察者欲追踪的状态,也可设置目标状态 |
Observer | 抽象观察者,定义观察者的更新操作接口 |
ConcreteObserver | 具体观察者,实现抽象观察者的接口,做出自己的更新操作 |
角色示例
类名 | 担任角色 | 说明 |
---|---|---|
OfficialAccount | 抽象目标 | 微信公众号,提供三个接口: 关注(follow) 取关(unFollow) 推送(send) |
MyOfficialAccount | 具体目标 | 我的微信公众号 |
User | 抽象观察者 | 用户 |
Developer | 具体观察者 | 开发者 |
UML类图
代码
1 | <?php |
创建 OfficialAccounts.php,内容如上。
执行
1 | $ php OfficialAccounts.php |