我正在研究面向对象设计问题。我将尝试专注于我感到困惑的部分,并用文本解释它,而不是提供代码。
我有一个名为 SalesPolicy 的类,其中包含 TaxPolicy 列表。 TaxPolicy 是一个抽象类,表示税收政策,以名称和税率为属性。 TaxPolicy 包含一个名为accept 的抽象方法。 TaxPolicy 的具体实现必须实现接受方法并提供决定何时适用 TaxPolicy 的逻辑。
我有另一个名为 SalesEngine 的类。 SalesEngine 有一个 SalesPolicy,SalesPolicy 是 SalesEngine 构造函数的参数之一。 SalesEngine 通过调用accept 方法来决定SalesPolicy 中的TaxPolicy 列表中的TaxPolicy 是否适用于某个项目,然后相应地计算税费。如前所述,SalesPolicy 包含一个属性,它是 TaxPolicy 列表和添加到列表的方法。
我需要知道的是 SalesEngine 类是否可以有一个像 SalesPolicy 这样的参数。从可测试代码的角度来看,这会产生什么影响?
最佳答案
我认为有这样的场景是完全可以的:
public SalesEngine(SalesPolicy policy) { ... }
当创建SalesEngine
时,用户或任何人已经知道他们想要使用什么SalesPolicy
。
另一个可能有值(value)的场景是用户不知道他们在 SalesEngine
时想要使用什么 SalesPolicy
code> 已创建,您可以通过添加默认构造函数和 setter 方法来完成:
// default construtor
public SalesEngine() { ... }
// sets the sales policy
public void setSalesPolicy(SalesPolicy policy){ ... }
关于java - 作为参数传递给类的关联对可测试性有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808998/