本文要介绍和展示的是设计模式中的一种——观察者模式。
1.什么是观察者模式?
定义:观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。
2.观察者模式的实现方式
观察者模式有很多实现方式,从根本上说,该模式必须包含两个角色:观察者和被观察对象。在刚才的例子中,业务数据是被观察对象,用户界面是观察者。观察者和被观察者之间存在“观察”的逻辑关联,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应。如果在用户界面、业务数据之间使用这样的观察过程,可以确保界面和数据之间划清界限,假定应用程序的需求发生变化,需要修改界面的表现,只需要重新构建一个用户界面,业务数据不需要发生变化。
3.本文展示的应用范例
市里新修了一个图书馆,现在招募一个图书管理员叫T,T知道图书馆里的图书更新和借阅等信息。现在有三个同学甲乙丙想去了解以后几个月的图书馆图书信息和借阅信息,于是它们去T那里注册登记。当图书馆图书更新后,T就给注册了的同学发送图书更新信息。三个月后,丙不需要知道图书更新信息了,于是就去T那儿注销了它的信息。所以,以后,只有甲乙会收到消息。几个月后,丁也去图书馆注册了信息,所以以后甲乙丁会收到图书更新信息。
4.代码实现与分析
抽象主题类定义
具体主题类定义
观察者类定义
主函数实现
5.代码运行结果
结果分析:一开始图书馆的数据data1为0,有三个读者甲、乙、丙。当改变data1的数据后,三个观察者都会接收到通知,从而更新自己的状态。主题可以选择增加或者删除观察者对象,在删除丙对象后,data1发送改变,丙对象就不会再收到通知,而甲、乙对象会收到通知从而改变自己的状态。
原文:https://www.cnblogs.com/fengyakk/p/12003046.html