在我的應用程序中,我有幾個必須瞭解彼此的組件,例如菜單欄和工具欄,這兩個組件都需要知道表添加或刪除作業,以及找出選擇哪個工作。調解員模式或責任太多
因此,我創建了一個名爲guiMediator
的對象,我傳遞給每個對象,並向它們註冊自己,以便它們可以使用該對象互相訪問。它還負責在添加新工作或後臺工作人員完成工作時觸發事件。
既然知道很多關於系統的知識,這種類型的用法在一個地方負有多少責任,或者這是模式的正確用法?
在我的應用程序中,我有幾個必須瞭解彼此的組件,例如菜單欄和工具欄,這兩個組件都需要知道表添加或刪除作業,以及找出選擇哪個工作。調解員模式或責任太多
因此,我創建了一個名爲guiMediator
的對象,我傳遞給每個對象,並向它們註冊自己,以便它們可以使用該對象互相訪問。它還負責在添加新工作或後臺工作人員完成工作時觸發事件。
既然知道很多關於系統的知識,這種類型的用法在一個地方負有多少責任,或者這是模式的正確用法?
通常我會使用類似的東西在命令模式:
所以,你的命令知道你所有的視圖組件,但是你的視圖組件需要知道的唯一事情是當用戶完成一個給定的動作時執行哪個命令。
聽起來比選擇好......但是,嘿,我嫁給了醜陋的至少妹妹;-)
我會使用被動視圖,您可以閱讀有關here的信息。
請注意,UI界面以外的任何地方都不瞭解按鈕,複選框等。您可以使用接口將實際實現抽象出來。
這會給你幾個好處。首先,它將記錄您的代碼如何與UI進行交互,爲您提供一個實現模擬對象以用於自動化測試的地方,並最終允許您更改UI的範圍。
例如,用可點擊的面板代替命令按鈕。然後,表單將從面板而不是按鈕開始傳遞點擊事件。表單可以不知道每個小部件應該執行的實際命令。 UI對象負責照顧。