擁有類Container
,Item
和Property
,只要項目中的某個屬性發生變化,就應該通知容器。通知另一班級的變化
容器是項目的所有者,需要根據其屬性正確管理它們的信息。
我想到了2個選項尚未:
- Observer模式。
- 代理對象。
在我看來,觀察者模式似乎太重了。代理對象可以很好地工作,但是在這種情況下,我會違反DRY原則,因爲我必須將代理中的調用轉發給實際的對象。
需求是,細節對用戶是隱藏的。要求不需要調用一些update_item()
函數或類似的函數,即給用戶通知容器的責任,這可能導致使用問題。
我用這種方法看到的問題是「Item」變得依賴於「Container」,而「Container」依賴於「Item」。這對C++來說不是問題,但是它表明了一個設計缺陷。一般來說,我傾向於保持孤立。 – stschindler 2012-07-27 15:34:49
@Tank:如果需要,可以通過一些'ContainterInterface'和'ItemInterface'或類似的東西進行通信。它與Observer模式的接口沒有區別。但儘量不要使簡單的事情複雜化) – Andrew 2012-07-27 15:37:42
這是閱讀_Clean Code_等書籍的結果。 ;)當''Item''依賴於''Container''時,我馬上意識到,在單元測試中,老實說,在那裏處理「Container」會感到很奇怪。界面想法對我來說聽起來很不錯,因爲它消除了依賴關係。 – stschindler 2012-07-27 15:43:21