设计模式--观察者模式

观察者模式(订阅/发布模式)

场景:有一个目标对象,其状态会不定时的变化,会影响到客户端,每个客户端对这个改变做出响应。  

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  

 

posted @ 2016-04-18 11:48  ceibaf  阅读(160)  评论(0编辑  收藏  举报