拥有类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