是否可以通过阅读源代码来区分组合和聚合关系? 我试图找到一些模式,我在下面列出了它们. 我以this site为例来解释我认为的模式 组成 public class Engine{ . . . }public class Car{ Engine e = new
我试图找到一些模式,我在下面列出了它们.
我以this site为例来解释我认为的模式
组成
public class Engine { . . . } public class Car { Engine e = new Engine(); ....... }
聚合
public class Address { . . . } public class Person { private Address address; public Person(Address address) { this.address = address; } . . . }
我发现这些模式可以区分
组成(是其中的一部分)
>定义为一个类的字段.
>示例:[Engine e] Engine定义为Car类的字段e
>在类中实例化和分配.
>示例:[Engine e = new Engine();]引擎在实例中被实例化
类
聚合(有)
>定义为一个类的字段
>示例:[私有地址;]地址定义为字段
类Person的地址
>在课堂上安排好
>示例:[Address address = new Address();]地址已实例化
外面的人.
>通过将实例作为参数发送到构造函数,在构造函数中分配.
>示例:[Person person = new Person(address);]实例
地址作为参数通过构造函数传递并分配
在Person类的构造函数中.
我可以考虑这些来区分聚合和组成关系吗?
是否存在更多用于区分的限制因素?
不是真的,因为没有一种独特的方式来实现每种关联(事实上,问题是我们有三种关联,“正常关联”,“聚合”和“组合”).如果语言有指针那么你可以尝试猜测如果引擎在Car中定义为指针那么编写那段代码的程序员建议汽车和引擎之间的关系(聚合或关联)更柔和,因为删除汽车不意味着丢失Engine对象.