你的书很好解释,让我详细说明一下,并提供一些例子。
代表团:当我的对象使用另一个对象的function,而不改变它。
有时候一个class可能在逻辑上需要很大。 但是大class不是一个好的编码实践。 有时候,一个类的某些function可能以多种方式实现,您可能需要稍微改变一下。
class FeatureHolder { void feature() { // Big implementation of the feature that you dont want to put in the class Big } } class Big { private FeatureHolder FH = new FeatureHolder(); void feature() { // Delegate to FeatureHolder. FH.feature(); } //.. Other features }
从上面的例子来看,FH的Big.feature()调用function并没有改变。 这样,Big类就不需要包含特征的实现(分工)。 另外,feature()可以像“NewFeatureHolder”一样被其他类实现,而Big可以select使用新的特性持有者。
构图:我的对象由其他对象组成,这些对象在我的对象被分配后又不能存在 – 垃圾收集。
聚合:我的对象由其他对象组成,即使在我的对象被销毁后也可以存在。
从技术上讲,构成是“一部分”,聚合是指“关系”。 你的arm是你的一部分。 如果你不再活着,你的arm也会死亡。 你的布是不是你的一部分,但你有他们; 你可以做客,你的布料不会跟你一起去。
在编程中,有些对象是另一个对象的一部分,没有它就没有逻辑意义。 例如,一个button组成一个窗口框架。 如果一个框架closures,该button没有理由在(组成)。 一个button可能有一个数据库的引用(如刷新数据); 当button被删除时,数据库可能仍然在(聚合)。
对不起,我的英语,希望这有助于