我们说我有一个classA
,它有自己的方法,有自己的私有字段和你有什么(基本上遵循封装标准)。然后我有classB
,它需要执行最终状态(通过classA
的一种方法获得,这有点打破了封装)classA
。然后我们有classC
,再次需要classB
的最终状态。依此类推,让我们对classM
说。是否认为耦合度太高?
编辑:好吧,让我们说我正在设计Loot系统,这取决于是否根据敌人击败掉落(每个敌人都有不同的掉落几率)。如果敌人被击败,那么处理战斗物的类会掷骰子,无论它是否掉落,然后我需要将该状态传播给处理战利品分配的其他类。如果有掉落,则类处理战利品会对玩家进行战利品生成和分配,如果没有,则无效。
最终的执行将是:
classA a = new classA;
... //classA does its stuff
classB b = new classB(a.getFinalState());
... // again class does its stuff based on outcome of A
classC c = new classC(b.getFinalState());
等等。
答案 0 :(得分:2)
是的。与级别2紧密耦合。这是非常可避免的,并且被认为是不良的做法,这降低了代码的灵活性和可重用性。测试是一个夜魇。
如果他们有相互关联的属性,请考虑查看Builder Pattern
。
Builder模式是为伸缩构造函数反模式找到解决方案
构造函数反模式是你目前所拥有的。
答案 1 :(得分:1)
修改:您可以按照Delegation Pattern及其亲密兄弟Decorator Pattern
来实现您的目标如已建议的那样,Builder Pattern是一种有效的替代方案。它始终取决于您的原始设计的目标。