我正在研究OO设计问题。我将尝试着眼于我困惑的部分,并以文本形式进行解释,而不是提供代码。

我有一个名为SalesPolicy的类,其中包含TaxPolicy列表。 TaxPolicy是一个抽象类,代表名称和税率为属性的税收政策。 TaxPolicy包含一个称为accept的抽象方法。 TaxPolicy的具体实现必须实现accept方法,并提供用于确定何时应用TaxPolicy的逻辑。

我还有另一个叫做SalesEngine的类。 SalesEngine具有SalesPolicy,而SalesPolicy是SalesEngine构造函数的参数之一。 SalesEngine通过调用accept方法来确定SalesPolicy中的TaxPolicy列表中的TaxPolicy是否适用于某项,然后相应地计算税款。如前所述,SalesPolicy包含单个属性,该属性是TaxPolicy的列表以及添加到List的方法。

我需要知道的是,是否可以为SalesEngine类使用类似SalesPolicy的参数。从可测试代码的角度来看,这有什么影响?

最佳答案

我认为拥有这样的情况是完全可以的:

public SalesEngine(SalesPolicy policy) { ... }


在创建SalesEngine的位置,用户或已经知道他们要使用什么SalesPolicy的人。

可能包含的另一种情况是用户在创建SalesPolicy时不知道他们要使用什么SalesEngine的情况,您可以通过添加默认构造函数和setter方法来做到这一点:

// default construtor
public SalesEngine() { ... }

// sets the sales policy
public void setSalesPolicy(SalesPolicy policy){ ... }

关于java - 作为参数传递给类的关联对可测试性有什么影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11808998/

10-15 10:14