最近1直在看设计模式,之前写过1篇文章:设计模式中的关系在代码中的实现
以后他们问我说:聚合和组合在代码上怎样表现诞生命期的不同。由于当时是真心不懂,不敢回答,现在有1点点心得,和大家分享1下。
聚合:表示两个对象之间是整体和部份的弱关系,部份的生命周期可以超出整体。如电脑和鼠标。
?大话上的聚合:
?大话上的组合:
表示两个对象之间是整体和部份的强关系,部份的生命周期不能超出整体,或说不能脱离整体而存在。组合关系的“部份”,是不能在整体之间进行同享的。
●异同点
共同点:他们都是属于关联,整体与部份的关系。
不同点:生命周期不同,聚合是独立的,不随整体共存亡的(生命周期不同步)。组合正好相反,与整体共存亡(生命周期同步)。
●代码中的实现
?聚合
在代码中的中的实现是比较灵活的,大雁聚合为雁群,只要大雁类是雁群的成员变量就好了。
代码有两种方式都是聚合:
第1种方式:这类方式1般用在大雁WideGoose是抽象类(父类)的时候,这时候候,就能够传入不同的子类,这样就会使它调用的时候很灵活。
?组合关系
在代码中就没有这样灵活了,它是强耦合的,它生命周期是同生同死的关系。我们知道1个对象被实例的时候就是我们意义上的“生”,因此我们就把组合的对象放在被组合对象的构造函数中:
我们学习东西的时候,很想1下子就都要全懂了,其实学习是1个不断思考、不断研究的东西。我们要做的是:知道它、研究它、会用它、交换它。