Aha!设计模式(96)-观察者模式(1)

网友投稿 561 2022-10-12

Aha!设计模式(96)-观察者模式(1)

Aha!设计模式(96)-观察者模式(1)

意图

定义一种一对多的通知方式,当监视对象的状态发生变化时,可以将这种变化通知给多个接收者。

动机

面向对象设计和编程的一个通常做法就是将系统的功能进行细分,然后封装为单独的类。但即使是这样,在将这些类组合在一起构成系统的时候,类与类之间还是需要发生某种关联。作为数据的接收者,比较理想的状态是不限制数据发送者的类型,换言之可以接收来自任何发送者类的数据。这一部分是适配器模式的范畴。本文讲述的是另一个角度,即发送者的角度。作为发送者,比较理想的状态是可以将数据发送给任何接收者,而不用考虑接收者的类型。这种情况就是我们今天要说明的观察者模式。

结构

当一个对象需要与不特定类型或者不特定数量的对象进行交互时,可以使用观察者模式。这里的交互可以是通信,也可以是调用对方的功能,二者没有本质的区别。

目标类Subject作为通知的发起者,需要管理通知的接受者。这里的管理一方面是指需要保有容纳接收者对象的数据结构,另一方面也意味着需要提供向该数据结构增加通知对象和删除通知对象的接口。除此之外,目标类还需要实现向所有交互的接收者发出通知的接口。

观察者类Observer定义了接受通知的接口。目标类发出通知时需要使用这个接口。

具象目标类ConcreteSubject派生自目标类Subject,同时实现应用级别的功能。具象目标类的状态发生变化时使用基类的通知接口发出通知。

觉得本文有帮助?请分享给更多人。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Aha!设计模式(75)-职责链模式(3)
下一篇:Neo 最小和快速Go Web框架拥有极其简单的API(neo4j)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~