最近稍闲了点,所以想重拾一下以前学的知识,这不就拿Observer模式开蒜了,废话少说,来吧!
一个软件系统应该存在着各式各样的依赖,小系统尚且如此,大的商业系统当然以来更加复杂。我举一个在eHR(人力资源管理)系统中的依赖关系:
1.组织架构的修改要导致绩效考核系统中签核人的修改。
现在将这段代码进行一下重构,在这个依赖关系里可以抽象出下面几个对象:
1.抽象主题:ISubject
2.具体主题:OrgChgSubject
3.抽象观察者:IObserver
4.观察者:OrgChgObserver
实现如下:



































































































































































运行结果:

可以看出实际上组织架构的变动必然会导致很多的地方要求随之相应的变动,所以各个模块都可以实现各自的Observer,实现自己的Update函数。
很简单不是吗?不过还有一些边缘问题要解决:
1.观察者在不同模块怎么办?即处于不同的DLL?
2.如何将DEM事件机制运用进去?
3.是否可以与MOP整合?
。。。。。
今天没有时间了,先写到这里吧。