设计模式--观察者模式
观察者模式(订阅/发布模式)
场景:有一个目标对象,其状态会不定时的变化,会影响到客户端,每个客户端对这个改变做出响应。
PULL or PUSH ?
观察者模式由pull变为push
Hollywood原则:不要访问我,当我状态改变的时候我来告诉你。例如:websocket邮件客户端可以刷新自己。
上图来自wiki百科,https://en.wikipedia.org/wiki/Observer_pattern
怎样使客户端对象不会影响到subject
client实现一个接口,subject只面向这个接口
事件监听器
UI组件,并发时有问题,
Mediater仲裁者模式(调节器)
使多个类之间的紧耦合关系弱化,交互协议如果有重叠的话,尽量复用。
class A {
public void interact()//Mediator:interact()
}
class Mediator{
public void interact //定义交互规则
缺点:mediator会变得复杂
}
附加UML