所谓设计模式通俗点理解就是解决固定问题的套路。而说起观察者模式又不得不提起客户端框架设计中最常用的实现逻辑:MVC架构+观察者模式。
MVC架构中的M、V、C分别是model、view、control的缩写。
model:模型,处理数据逻辑部分
view:界面,处理数据显示部分
control:控制器,模型和界面的沟通桥梁,负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC架构是面向对象设计原则中“单一职责”的典型,将数据处理与界面实现完全剥离开来,大大降低了代码的耦合度,提高了代码的复用性。而这样做就产生了一个问题,如何能够有效的解决一旦数据层的数据发生变化就能及时通知到相应的主题界面。观察者模式作为一种传递消息的机制应用在MVC架构中就很好的弥补了这一不足。
观察者模式(Observer)也叫订阅——发布模式,定义了一种“一对多”的依赖关系,主要目的就是为了解决:当一个对象的状态发生改变时能及时通知给其他对象。具体关系如图所示:
举个例子来说明,出版杂志的杂志社就是主题(发布者),订杂志的客户就为订阅者,客户从杂志社订阅杂志(订阅主题)后,客户都会收到杂志社寄来的最新一期杂志。如果客户不想订阅了,可以取消,以后就不会再收到杂志。