「頂級」類將一個事件附加到一個可能在callstack中「5+層以下」的類的最佳設計決策是什麼?附加到C#中的調用堆棧中的事件的最佳方法?
例如,也許MainForm產生了一個對象,並且該對象產生了其他幾個對象調用的調用堆棧。最明顯的方法是將事件鏈接到對象層次結構,但這看起來很混亂,需要很多工作。
另一個解決方案是使用觀察者模式,通過創建一個可公開訪問的靜態對象來暴露事件,並充當底層對象和頂層「表單」之間的代理。
有什麼建議嗎?
這是一個僞代碼示例。在這個例子中,MainForm實例化'SomeObject',並附加到一個事件。 'SomeObject'附加到它實例化的對象上,以便將事件傳遞給MainForm偵聽器。
class Mainform
{
public void OnLoad()
{
SomeObject someObject = new SomeObject();
someObject.OnSomeEvent += MyHandler;
someObject.DoStuff();
}
public void MyHandler()
{
}
}
class SomeObject
{
public void DoStuff()
{
SomeOtherObject otherObject = new SomeOtherObject();
otherObject.OnSomeEvent += MyHandler;
otherObject.DoStuff();
}
public void MyHandler()
{
if(OnSomeEvent != null)
OnSomeEvent();
}
public event Action OnSomeEvent;
}
很好的答案!謝謝。 – user43823 2008-12-06 20:14:57