java - 作为参数传递给类的关联对可测试性有何影响?

标签 java associations testability

我正在研究面向对象设计问题。我将尝试专注于我感到困惑的部分,并用文本解释它,而不是提供代码。

我有一个名为 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/

相关文章:

java - 回文数

java - 是否有正则表达式方法将一组字符替换为另一组字符(如 shell tr​​ 命令)?

javascript - 使用sequelize获取第三个模型的关联

class - 关联类唯一性

java - 构造函数注入(inject),可测试性设计

java - 在 weblogic 集群设置中处理的 JAVA 缓存

java - 使用 lucene 创建和查询 n-gram 索引

python - 如何执行 ngram 到 ngram 关联

java - 使用构造函数注入(inject)正确设计为可测试性而构建的类

c++ - 创建可测试代码