可复用策略Composite合成/Aggregate 聚合

前端之家收集整理的这篇文章主要介绍了可复用策略Composite合成/Aggregate 聚合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
优先考虑composit|Aggregate,尽量不要使用extends,association(关联) 的特殊种类  Aggregation 它表示'拥有'关系或整体与部分的关系
 Composition 可理解成强关联关系,强得多的'拥有'关系,一个合成的新的对象完全拥有对其组成部分的支配权,包括它们的创建/湮灭,
 一个合成关系中的成分对象是不能与另一个合成关系共享的。
 一个成分对象在同一时刻内只属于一个合成关系
 合成是值的聚合(Aggregation by value)、聚合是引用的聚合(Aggregation by Reference)
·composite/aggregation Reuse
 新对象存/取成分对象的唯一方式是接口。
 成份对象的内部细节,新对象是不可见。
 此复用机制支持包装/所需依赖较少
 每一个新对象可以将焦点集中在一个任务上
 新对象可以动态引用与成分对象相同类型的实例,类似 setUserList(User userObj) 在些User可看作一个接口
 此合成/聚合复用机制会有多个实例需要管理
·使用extends
 extends 是OO特有的复用机制,很容易就会被滥用。
 继承是类型的复用,它通过扩展一个已有对象的实现来对现有功能进行扩展/增加新的功能,基类要捕获共同的属性/形为,而子类要扩展/重写一些属性/形为。
 继承会破坏超类的封装,因为它会将处理细节暴露给子类。
 水波效应,如果超类处理机制改了,相应对子类的改动是非常大的。
 IS A 与 HAS A 的区别
 IS A 代表一个类是令一个类的一种
 HAS A 代表一个类是令一个类的一个角色
·composite/aggregation复用机制可应用到几乎任何环境中去,而继承只能应用到有限的环境中。

猜你在找的设计模式相关文章