协作(CRC卡)

时间:2013-11-19 12:02:07

标签: java collaboration crc

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);

    }

}

对于上面的类,可以看到项目使用customer和supplier作为其CONSTRUCTOR参数。接下来,整个项目对象也将作为CONSTRUCTOR参数投入发票类,从而创建唯一的发票。

接下来,还有另外两个类,Calculation.java和Helper.java,它接收(发票,项目)& (发票,项目,计算)分别进入其NORMAL方法参数。

在这种情况下,我是否正确地说通过构造函数参数或普通类参数BOTH传递数据意味着它们与他们接收的类合作?

那是:

助手

打印|发票

。 - |项目

。 - |计算

还是反过来?

哪个..项目与Helper.java合作?

最后,上述编码方式是否意味着我的程序设计中的低或高耦合?

1 个答案:

答案 0 :(得分:0)

我认为这些问题没有任何硬性和快速的答案。我想我对于一个对象是否与另一个对象合作的决定是考虑第一个对象是否使用第二个对象,而不是第二个对象是第一个对象的一部分或与第一个对象有关。

因此发票多个订单项 - 我不会将其称为合作者,而是称为部分。但是使用另一个对象来完成其工作的东西是使用协作者。

我不认为CRC卡的解释非常好。可能非常有用的是关注价值对象,实体和服务之间的差异 - 我认为域驱动设计非常关注这一点。此外,在伦敦学校或Mockist TDD上进行Google搜索,这是关于构建松散耦合的系统,其中对象委托给其他对象(他们的协作者)。

这些东西很微妙,但你走在正确的轨道上。