Java 耦合度太高还是可以这样设计?
假设我有一个Java 耦合度太高还是可以这样设计?,java,class,coupling,Java,Class,Coupling,假设我有一个classA,它有自己的方法,有自己的私有字段,你有什么(基本上遵守封装标准)。然后我有classB,它的执行需要classA的最终状态(通过classA的方法之一获得,这在某种程度上打破了封装)。然后我们有classC,它同样需要classB的最终状态。以此类推,让我们说一下classM。是否认为耦合度过高 编辑:好的,假设我在设计战利品系统,这取决于掉落是否基于被击败的敌人(每个敌人有不同的掉落机会)。如果敌人被击败,处理战斗物品的职业将掷骰子,无论它是否掉落物品,然后我需要将该
classA
,它有自己的方法,有自己的私有字段,你有什么(基本上遵守封装标准)。然后我有classB
,它的执行需要classA
的最终状态(通过classA
的方法之一获得,这在某种程度上打破了封装)。然后我们有classC
,它同样需要classB
的最终状态。以此类推,让我们说一下classM
。是否认为耦合度过高
编辑:好的,假设我在设计战利品系统,这取决于掉落是否基于被击败的敌人(每个敌人有不同的掉落机会)。如果敌人被击败,处理战斗物品的职业将掷骰子,无论它是否掉落物品,然后我需要将该状态传播给处理战利品分配的其他职业。若有掉落,处理战利品的职业将执行战利品生成并分配给玩家,若并没有,则无效
最终的执行将类似于:
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级紧密耦合。这是完全可以避免的,被认为是降低代码灵活性和可重用性的糟糕做法。测试是一场噩梦
如果有相关性质,请考虑.</P> 构建器模式是找到伸缩构造函数反模式的解决方案
到目前为止,这种构造函数反模式就是您所拥有的。编辑:您可以通过遵循a及其近亲实现您想要的
如前所述,生成器模式是一种有效的替代方案。这总是取决于你的原始设计的目的。我的错,我实际上编辑了我的原始帖子,将我当前的问题包括在问题中。我不明白这里的问题是什么?为什么不把对象a传递给对象b的构造函数呢?它可以通过正常的方式对其进行查询,以确定状态,而不会破坏封装。如果您担心暴露太多,可以尝试使用包私有getter或将接口隔离到它们自己的模块?你问的问题很好,但思考太难了