耦合太高或者设计得这样吗?

时间:2015-10-13 13:14:29

标签: java class coupling

我们说我有一个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());

等等。

2 个答案:

答案 0 :(得分:2)

是的。与级别2紧密耦合。这是非常可避免的,并且被认为是不良的做法,这降低了代码的灵活性和可重用性。测试是一个夜魇。

如果他们有相互关联的属性,请考虑查看Builder Pattern

  

Builder模式是为伸缩构造函数反模式找到解决方案

构造函数反模式是你目前所拥有的。

答案 1 :(得分:1)

修改:您可以按照Delegation Pattern及其亲密兄弟Decorator Pattern

来实现您的目标

如已建议的那样,Builder Pattern是一种有效的替代方案。它始终取决于您的原始设计的目标。