观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
Subject类:主题或抽象通知者,它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个借口,可以增加和删除观察者对象。
Observer类:抽象观察者,为所有的具体观察者定义一个借口,在得到主题的通知时更新自己。这个借口叫做更新借口。抽象观察者一般用一个抽象类或者一个借口实现。更新借口通常包含一个Update()方法,这个方法叫做更新方法。
ConcreteSubject类:具体主题或具体通知者,将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有等级过的观察者发出通知。具体主题角色通常用一个具体子类实现。
ConcreteObserver类:具体观察者,实现抽象观察者角色所要求的更新借口,一遍使本身的状态与主题的转台相协调。具体观察者角色可以保存一个指向具体主题对象的引用。具体观察者角色通常用一个具体子类实现。
这个设计模式可以先这样理解,ConcreteSubject是一个通知者,ConcreteObserver是一个观察者,也是被通知的对象,相对应的两个是抽象类,可以为抽象类或者接口,根据具体情况而定。ConcreteObserve可以是不同的观察者,也是ConcreteSubject通知的对象。相当于定义中的不同的对象,而ConcreteSubject是那一个主题对象。
在收费系统中:
Offline是一个观察者,是具体的下机操作,OffLineSubject是一个观察者,当有下机操作请求时,通知具体的观察者添加上机记录,更新不同的表记录。
这里的下机没有抽象,因为在收费系统中没有相似的功能块,或者能实现不同的方法来实现下机。
观察者模式的好处是将一个系统分割成一系列相互协作的类时需要维护相关对象间的一致性。而维持一致性而使各类紧密耦合,这样会给维护,扩展和重用都带来不便。而观察者模式的关键是Subject和Observer。一个Subject可以有n个依赖他的Observer。一旦Subject的状态发生改变,所有的Observer都可以得到通知。
所以在收费系统中,当一个下机Subject发生改变时,所有依赖它的表都可以发生改变,这也是为什么用它。
分享到:
相关推荐
VB版机房收费系统,VB版机房收费系统,VB版机房收费系统,VB版机房收费系统,VB版机房收费系统,
机房收费系统的概要设计说明书,根据软件需求说明,建立目标系统的总体结构和模块间的联系;定义数据库和数据结构;定义目标系统的外部接口包括用户界面;设计系统的安全机制和出错处理机制;定义系统运行,制定组装...
机房收费管理系统,这是一份课程设计,使用的是C语言编程,里面除了有源代码之外还有很多总结和对于题目的分析。这很不错的参考资料
vb版,机房收费系统
此机房收费系统的实现使用了vb.net+sql server。采用MVC三层架构,及一些设计模式,其设计采用UMl标准……
使用C语言编写的一个简单的机房收费管理系统,使用VC++6.0平台进行开发。资源内的工程可在安装了VC++6.0(或更高版本)的机器上直接打开运行。
机房管理系统
机房收费系统在需要进行需求分析时需写的文档
该文档是关于机房收费系统的文档中的顶层图
机房收费系统在详细设计过程中,需要做的文档
一个详细的需求分析报告,以人们熟悉的机房收费系统为例,一个好的学习模板!!
机房收费系统中进行概要设计时,所需要的文档
在VS2013环境下,编写的C语言Windows程序设计,机房收费管理系统。代码仅仅使用C语言调用Windows API函数和MYSQL数据库专用库文件编写。有C语言基础的,简单易懂。代码没有优化,思路很清晰。没有省略的代码,我都...
基于C语言实现dos界面简单的机房收费管理系统.zip 大学生课程设计 基于C语言的课程设计 自己大二写的课程设计
在学校没事写的一个机房收费管理系统,带有使用说明视频,测试完美可用。
C语言课程设计 机房收费管理系统 (1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。 (2)计算功能:计算每个下机学生的上机费用,每小时1元。 (上机费用=上机时间* 1.0/h ,不足一小时按一小时计算...
机房收费系统.docx机房收费系统.docx机房收费系统.docx机房收费系统.docx机房收费系统.docx机房收费系统.docx机房收费系统.docx机房收费系统.docx
详细分析了关于机房收费系统的可行性分析、研究,它的重大意义,和作用。
该资源属于ER图,是用于机房收费系统的ER图,是经过多次重复修改得到一个图。