首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >协作(CRC卡)

协作(CRC卡)
EN

Stack Overflow用户
提问于 2013-11-19 12:02:07
回答 1查看 716关注 0票数 2
代码语言:javascript
复制
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和parameter作为其构造器参数。接下来,整个项目对象也会作为其构造函数参数抛到into类中,这将创建一个唯一的发票。

接下来,还有另外两个类,Calculation.java和Helper.java,它们分别接受(发票、项目)&(发票、项目、计算)为其正常的方法参数。

在这种情况下,我说的对吗?通过构造函数参数或普通类参数传递数据意味着它们与所接收的类协作吗?

这就是:

辅助对象

打印发票

。-项目

。-计算

或者是相反的情况?

那就是..。相反,项目与Helper.java协作吗?

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

EN

回答 1

Stack Overflow用户

发布于 2013-11-19 13:34:56

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

因此,发票上有许多行项目--我不会称它们为协作者,而是部分。但是,使用另一个对象来完成其工作的东西是使用一个协作者。

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

这东西很微妙,但你走的路是对的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20071052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档