是否可以通过阅读源代码来区分组合和聚合关系?
我试图找到一些模式,我在下面列出了它们.
我从这个网站上的例子 只是为了解释我认为是一种模式
组成

public class Engine
{
. . .
}
public class Car
{
Engine e = new Engine();
.......
}
Run Code Online (Sandbox Code Playgroud)
聚合

public class Address
{
. . .
}
public class Person
{
private Address address;
public Person(Address address)
{
this.address = address;
}
. . .
}
Run Code Online (Sandbox Code Playgroud)
我发现这些模式可以区分
组成(是其中的一部分)
定义为一个类的字段.
在类中实例化和分配.
聚合(有)
定义为一个类的字段
在课堂上安排好了
通过将实例作为参数发送到构造函数来在构造函数中分配.
我可以考虑这些来区分聚合和组成关系吗?
是否存在更多用于区分的限制因素?
并非如此,因为没有一种独特的方法来实现每种关联(事实上,问题是我们有三种关联,“正常关联”,“聚合”和“组合”)。
如果该语言有指针,那么您可以尝试猜测,如果 Engine 在 Car 中定义为指针,那么编写该代码段的程序员建议在 Cars 和 Engines 之间建立更软的关系(聚合或关联),因为删除 Car 不会意味着丢失 Engine 对象。