是有一个模式用于传播配置状态下的一个对象图?
-
21-12-2019 - |
题
我试图避免创建一个 怪兽类, 和我注意到一个不太好的模式,并很好奇如果任何人有任何深入了解这个问题。
的问题
A
是复杂的。为了避免"上帝对象",一些逻辑推出入 B
和 C
.
一个现在作为一个 外观.它取决于B和C。
A -> B
-> C
然而,一个有结构的数据,B和C的需要。因此,我们必须保持的数据同步。
b.value1 = a.value1
b.value2 = a.value2
c.value1 = a.value1
c.value2 = a.value2
还a、B和C中必须将数据转换到使用它。
b.sum -> b.value1 + b.value2
b.doSomething -> b.sum() ...
c.sum -> c.value1 + c.value2
c.doSomethingElse -> c.sum() ...
为避免重复代码,我们将这些转换方法回答
a.sum -> a.value1 + a.value2
b.doSomething -> a.sum() ...
c.doSomethingElse -> a.sum() ...
但是,这意味着B和C,现在取决于一个,不只是它的数据。
A -> B -> A
-> C -> A
和这个结果在一个圆形的依赖。
我一直在研究依赖注射和工厂模式,这两种想法已经解决了很多问题,但我难住了对如何创建一个 象图 其节点的配置在运行时间。换句话说,我需要的能力来改变行为的一个具体的节点或节点组在运行时,从外部。什么是最好的方式传播配置状态下的一个对象图?
编辑
花了最后的几个小时试图制定我的想法变成一个问题,我想我可能无意中发现成的解决方案。我想我需要做的是创建一个结构类提供者 D
获得通过进入点,依赖这个信息。
A -> B -> D
-> C -> D
-> D
D管理 value1
和 value2
提供的 sum
法。D还有事件,火灾当值1和值2的变化使得依赖的节点(A、B和C)可以回应改变。
我认为这个解决方案的工作,但我想以后如情况有一个更好的解决方案。如果这个 是 图案我在寻找,它叫什么?"提供"模式?(不要混淆ASP.NET's 提供的模型!)
解决方案
你找观察员或调停人的模式。检查出来 http://sourcemaking.com/design_patterns/observer
不隶属于 StackOverflow