-
特点:它有两个名字:观察者、发布-订阅,个人觉得发布-订阅更为贴切,观察者更突出主动性行为或角色,那么被观察者就容易被忽视,不便于整体理解,发布-订阅就比较容易理解。
举个例子,在互联网还没有普及的时候,新闻都是通过报纸向社会中传递,条件好的家庭,可能就会向报社订阅每天的新闻报纸,到这就很容易看出,报社就是发布信息者,家庭是订阅信息者,报纸就是携带信息(数据)的载体。如果用观察者解释,报社就是被观察者,家庭是观察者。 - 角色:
角色名称 | 角色职责 |
---|---|
Subject(被观察者) | 数据的发送方,定义管理观察者相关接口 |
ConcreteSubject(实体被观察者) | 继承Subject实现具体接口逻辑 |
Observer(观察者) | 数据的接受方,定义处理数据的相关接口 |
ConcreteObserver(实体观察者) | 继承Observer实现具体的数据处理逻辑 |
-
角色关系:
Observer.png
-
代码示例:Observer
以上文献参考:《图解设计模式》
网友评论