日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Observer 模式在eHR中的应用

發布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Observer 模式在eHR中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
接觸模式應該是在大三的時候,那時候感覺是模式讓我真正的認識到了OO,現在畢業了,也工作有半年了,終于體會到了“商業特色的軟件開發”了,根本就沒有多余的時間去考慮運用什么模式、怎樣使系統可擴展性更強、如何重構。哎!mo辦法啊(看過天下無賊的應該能聽懂吧)!
??? 最近稍閑了點,所以想重拾一下以前學的知識,這不就拿Observer模式開蒜了,廢話少說,來吧!
????
??? 一個軟件系統應該存在著各式各樣的依賴,小系統尚且如此,大的商業系統當然以來更加復雜。我舉一個在eHR(人力資源管理)系統中的依賴關系:
??? 1.組織架構的修改要導致績效考核系統中簽核人的修改。

??? 現在將這段代碼進行一下重構,在這個依賴關系里可以抽象出下面幾個對象:
??? 1.抽象主題:ISubject
??? 2.具體主題:OrgChgSubject
??? 3.抽象觀察者:IObserver
??? 4.觀察者:OrgChgObserver

??? 實現如下: /**////?<summary>
????
///?抽象主題,所有的觀察者模式中的主題必須繼承該主題。
????
///?</summary>

????public?interface?ISubject
????
{

????????
/**////?<summary>
????????
///?添加觀察者
????????
///?</summary>

????????void?AttachObserver(IObserver?observer);

????????
/**////?<summary>
????????
///?分離觀察者
????????
///?</summary>

????????void?DetachObserver(IObserver?observer);

????????
/**////?<summary>
????????
///?通知觀察者
????????
///?</summary>

????????void?NotifyObservers();
????}

/**////?<summary>
????
///?抽象觀察者,所有的觀察者對象需實現該接口。
????
///?</summary>

????public?interface?IObserver
????
{
????????
/**////?<summary>
????????
///?抽象觀察者的更新方法,接收到通知后執行該方法
????????
///?</summary>

????????void?Update();
????}

/**////?<summary>
????
///?組織架構變化的觀察者
????
///?</summary>

????public?class?OrgChgObserver:IObserver
????
{
????????
public?OrgChgObserver()
????????
{
????????????
//
????????????
//?TODO:?在此處添加構造函數邏輯
????????????
//
????????}


????????
IObserver?成員#region?IObserver?成員

????????
public?void?Update()
????????
{
????????????Console.WriteLine(
"*******績效系統的觀察者*******");
????????????Console.WriteLine(
"1.已經接受到組織改動主題的通知");
????????????Console.WriteLine(
"2.更新績效管理系統的簽核人");
????????????Console.WriteLine(
"3.更新完畢");
????????????Console.WriteLine(
"*****************************");
????????}


????????
#endregion


????}

/**////?<summary>
????
///?組織架構變化主題
????
///?</summary>

????public?class?OrgChgSubject:ISubject
????
{
????????
private?ArrayList?observers;
????????
public?OrgChgSubject()
????????
{
????????????
//
????????????
//?TODO:?在此處添加構造函數邏輯
????????????
//
????????????observers=new?ArrayList();
????????}


????????
ISubject?成員#region?ISubject?成員

????????
/**////?<summary>
????????
///?添加觀察者
????????
///?</summary>
????????
///?<param?name="observer"></param>

????????public?void?AttachObserver(IObserver?observer)
????????
{
????????????observers.Add(observer);
????????}


????????
/**////?<summary>
????????
///?分離觀察者
????????
///?</summary>
????????
///?<param?name="observer"></param>

????????public?void?DetachObserver(IObserver?observer)
????????
{
????????????observers.Remove(observer);
????????}


????????
/**////?<summary>
????????
///?通知注冊該主題的觀察者
????????
///?</summary>

????????public?void?NotifyObservers()
????????
{
????????????Console.WriteLine(
"*******組織架構改動主題*******");
????????????Console.WriteLine(
"1.組織架構已經發生改變!");
????????????Console.WriteLine(
"*****************************");
????????????
for(int?i=0;i<observers.Count;i++)
????????????
{
????????????????IObserver?o
=(IObserver)observers[i];
????????????????o.Update();
????????????}

????????}


????????
#endregion

????}

/**////?<summary>
????
///?主類
????
///?</summary>

????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整合?
??? 。。。。。
??? 今天沒有時間了,先寫到這里吧。

轉載于:https://www.cnblogs.com/Masterpiece/archive/2004/12/21/79942.html

總結

以上是生活随笔為你收集整理的Observer 模式在eHR中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。