gpt4 book ai didi

java - 协作(CRC卡)

转载 作者:行者123 更新时间:2023-11-29 08:56:31 28 4
gpt4 key购买 nike

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

}

}

对于上面的类,可以看出project使用customer和supplier作为它的CONSTRUCTOR参数。接下来,整个项目对象也作为其 CONSTRUCTOR 参数被放入发票类中,这将创建一个唯一的发票。

接下来,还有另外两个类,Calculation.java 和 Helper.java,分别将 (invoice, project) & (invoice, project, calculation) 接收到它的 NORMAL 方法参数中。

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

即:

助手

打印|发票

. - |项目

. - |计算

还是相反?

哪个..项目改为与 Helper.java 协作?

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

最佳答案

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

所以一张发票许多行项目——我不会称它们为合作者,而是部分。但是使用另一个对象来完成其工作的东西使用协作者。

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

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

关于java - 协作(CRC卡),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com