设计模式 - 浅谈组合/聚合复用原则
组合/聚合复用原则
原则说明:组合/聚合复用原则(Composite/Aggregate Reuse Principle,CARP),尽量使用对象的组合/聚合关系达到代码复用的目的,而不是使用继承关系。
为什么要遵守该原则
该原则是为了让使系统更加灵活,降低类与类之间的耦合度,一个类的变化不会对其他类造成影响。其优点如下:
- 维护了类的封装性,因为成员对象的内部细节对于新对象不可见,因此这种复用又被称为 “黑箱”复用。
- 新旧类之间的耦合度低,新对象操作成员对象的唯一方法是通过操作成员对象暴露的接口。
- 复用的灵活性高,这种复用可以在运行期间动态进行,新对象可以动态引用与成员对象类型相同的对象。
示例
class Engine {
// 引擎类
}
class Wheel {
// 轮子类
}
class Car {
private Engine engine; // 聚合关系,汽车和引擎的生命周期可以不一致
private Wheel wheel; // 聚合关系,汽车和轮子的生命周期可以不一致
public Car(Engine engine, Wheel wheel) {
this.engine = engine;
this.wheel = wheel;
}
}
Car类
与Engine类
、Wheel类
之间是聚合关系,Car类
有Engine
和Wheel
的实例,但是Engine
和Wheel
的生命周期并不依赖于Car
,它们可以独立存在。这样如果Engine类
或Wheel类
发生变化,不会影响到Car类
。
总结
按照组合/聚合复用原则,我们在复用组件设计时,尽量使用组合/聚合关系进行复用,使用继承关系复用时,应该严格遵守里氏替换原则,必须满足 “IS-A”
关系的才能使用继承。
你的文章内容非常精彩,让人回味无穷。 http://www.55baobei.com/O63R3ipWjn.html
《永不放弃》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/59184.html