您的位置:首页 > 其它

Observer 模式在eHR中的应用

2004-12-21 11:03 288 查看
    接触模式应该是在大三的时候,那时候感觉是模式让我真正的认识到了OO,现在毕业了,也工作有半年了,终于体会到了“商业特色的软件开发”了,根本就没有多余的时间去考虑运用什么模式、怎样使系统可扩展性更强、如何重构。哎!mo办法啊(看过天下无贼的应该能听懂吧)!

    最近稍闲了点,所以想重拾一下以前学的知识,这不就拿Observer模式开蒜了,废话少说,来吧!

    

    一个软件系统应该存在着各式各样的依赖,小系统尚且如此,大的商业系统当然以来更加复杂。我举一个在eHR(人力资源管理)系统中的依赖关系:

    1.组织架构的修改要导致绩效考核系统中签核人的修改。

    现在将这段代码进行一下重构,在这个依赖关系里可以抽象出下面几个对象:

    1.抽象主题:ISubject

    2.具体主题:OrgChgSubject

    3.抽象观察者:IObserver

    4.观察者:OrgChgObserver

    实现如下:

    public interface ISubject

    public interface IObserver

    public class OrgChgObserver:IObserver

    public class OrgChgSubject:ISubject

    public class MainClass

            [STAThread]

        static void Main(string[] args)

                    OrgChgSubject o_OrgChgSubject=new OrgChgSubject();

            OrgChgObserver o_OrgChgObserver=new OrgChgObserver();

            o_OrgChgSubject.AttachObserver(o_OrgChgObserver);

            o_OrgChgSubject.NotifyObservers();

            Console.ReadLine();

        }

    }

    运行结果:

    


    可以看出实际上组织架构的变动必然会导致很多的地方要求随之相应的变动,所以各个模块都可以实现各自的Observer,实现自己的Update函数。

   很简单不是吗?不过还有一些边缘问题要解决:

    1.观察者在不同模块怎么办?即处于不同的DLL?

    2.如何将DEM事件机制运用进去?

    3.是否可以与MOP整合?

    。。。。。

    今天没有时间了,先写到这里吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: