定义:
合成服用原则又称为组合/聚合服用原则(Composite/Aggregate Reuse Principle):尽量采用组合(contains-a)、聚合(has-a)的方式而不是继承(is-a)的关系来达到软件的复用目的
优点:类之间的耦合度较低,一个类的变动对其他类的影响较小
组合和聚合 继承解释:
继承:子类拥有父类的所有,子类可以替换父类
组合:是整体与部分的关系,整体离不开部分,部分离开了整体没有意义,如飞机翅膀与飞机的关系。
聚合:也是整体与部分的关系,但整体可以分离部分,部分也可以离开整体,如火车与车厢的关系。
设计模式中的应用
使用组合原则:
组合模式中的Composite(抽象节点)持有Component(容器节点)的集合引用;
观察者模式中的Isubject(抽象主题类)持有IObserver(抽象观察者)的集合引用;
使用聚合原则:
备忘录模式中的careTaker持有Memento的弱引用;
迭代器模式中的concreteIterator持有ConcreteAggretegate的弱引用;
建造者模式中的BuildDirector(指挥者)持有IBuilder(建造者抽象)的弱引用,具体建造者持有建造对象的弱引用;
外观模式中的Facade持有SubSystem(子系统)的弱引用;
装饰模式中的Decorator持有Component的弱引用;
策略模式中的Context持有Strategy的弱引用;358