这次合作机房收费系统时,经过思考,在上下机那儿觉得既可以用状态模式还可以用观察者模式。
观察者模式:(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)他定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
UML图:
抽象被观察者提供一个借口让观察者进行添加和删除观察者。
添加(Attach):新增观察者,一追踪目标对象的变化。
删除(Detach):将已有的观察者删除。
通知(Notify):利用观察者提供的更新函数来通知此目标已经产生变化。
抽象观察者有一个虚拟的更新(Update)方法,每天具体的观察者要实现自己的更新方法。当目标对象改变时,会呼叫自己的通知函数来通知给每一个观察者,观察者实现自己的更新方法。
机房合作时上机、下机和强制下机可以用观察者模式。上机、下机和强制下机时具体的被观察者,判断卡是否存在,卡余额是否足够,卡是否正在上机等都是具体的观察者。这里为了练习,上机我用了宁外一个模式。下机、强制下机用观察者模式的UML图:
具体被观察者下机类的代码:
'观察者列表
''Private ilist As IList(Of ObserverBLL)
Private ilist As IList(Of ObserverBLL) = New List(Of ObserverBLL)
''' <summary>
''' 添加观察者
''' </summary>
''' <par