public class Testing //main app class
{
public static void main(String[] args)
{
//create instances
Customer c = new Customer(...);
Supplier s = new Supplier(...);
Project p = new Project(123, "abc", "qwerty", "asas", c, s);
Invoice i = new Invoice(789, p, "asas", true);
Calculation cost = new Calculation();
cost.calculateCost(i,p);
Helper h = new Helper();
h.printFile(i,p,cost);
}
}
对于上述类,可以看出项目使用客户和供应商作为其CONSTRUCTOR参数。接下来,整个项目对象也将作为其CONSTRUCTOR参数投入到发票类中,这将创建唯一的发票。
接下来,还有另外两个类,即Calculation.java和Helper.java,它们分别将(发票,项目)和(发票,项目,计算)纳入其NORMAL方法参数。
在这种情况下,我是否可以说通过构造函数参数或常规类参数BOTH传递数据意味着它们与正在接收的类进行协作?
那是:
帮手
打印|发票
。 -|项目
。 -|计算
还是相反?
哪个项目是与Helper.java合作的?
最后,上述编码方式是否意味着程序设计中的低耦合或高耦合?
最佳答案
对于这些问题,我认为没有任何坚决的答案。我想对一个对象是否与另一个对象进行协作的决定是考虑第一个对象是否使用第二个对象,而不是第二个对象是第一个对象的一部分或与第一个对象相关。
因此,发票中有许多订单项-我不会称其为合作者,而是零件。但是使用另一个对象完成其工作的东西是使用协作者。
我认为CRC卡没有得到很好的解释。可能非常有用的是将注意力集中在价值对象,实体和服务之间的差异上-我认为领域驱动的设计对此非常关注。另外,在伦敦学校或Mockist TDD上进行Google搜索,这都是关于建立松散耦合的系统的,这些系统将对象委托给其他对象(它们的协作者)。
这些东西很微妙,但是您走在正确的轨道上。