我有三個類以一種有趣的方式進行交互。一個是模型類,它必須被其他兩個類訪問,所以它的一個實例保持爲每個類的成員。這兩個類都以不同的方式與模型進行交互。兩個對象之間共享的模型
有幾個實例需要將模型對象完全拋棄並替換爲新實例,這使事情變得複雜。這兩個場合都出現在觀看/控制類中。因此,這些類中的任何一個都必須能夠向另一個發送信號,說:「我們需要協調並促進用一個新的Model對象替換我們的Model對象。」現在我在B類中有代碼告訴A類構造一個新的Model並將其發回,但是現在我需要處理相反的情況,事件在A類中出現,不幸的是A類沒有引用B類,可能不應該。
什麼是處理這個問題的好方法?
更新:抱歉,夥計們,這不能是一個單身人士。單身是當你需要保證只有一件事。這與我上面提出的任何要求沒有任何關係。這個班不是一個單身人士,不應該是。
更新:直到現在,實際上這個Model類實際上只有一個實例,但我有一個模糊的懷疑,我需要更多的,並且我不想通過使用Singleton來限制自己設計模式,這實際上解決了我所擁有的不同顧慮。原來我是對的:昨天我收到一個新的要求,現在我需要支持任意數量的這些。 :)當你不需要時,不要限制自己,也不要在設計模式不適用的情況下濫用設計模式!
我完全同意。持有人是模型的所有者。它管理模型的生命週期,包括爲客戶提供服務請求以請求將模型換出新模型。客戶可以註冊一個監聽器來通知更改(例如新模型)。 – 2009-04-27 20:22:11
我想我正在修改這個版本。從某種意義上說,ClassA實際上就是ModelHolder,所以我只實現了一個監聽器接口,ClassB將實現這個監聽器接口,以便在應該接收到新的Model對象時通知它。 – skiphoppy 2009-04-27 20:22:26