1.合成聚合原则的概念
合成聚合原则经常又叫做合成复用原则(Composite ReusePrinciple或CRP),尽量使用对象组合,而不是继承来达到复用的目的。
就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。
简而言之,要尽量使用合成/聚合,尽量不要使用继承。
2.合成聚合原则的分析
首先在面向对象设计中,可以通过两种基本方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承。
合成的概念是表示一个整体与部分的关系,指一个依托整体而存在的关系(整体与部分不可以分开),
例如:一个人对他的房子和家具,其中他的房子和家具是不能被共享的,因为那些东西都是他自己的。如果人没有了,他们的关系就没了。
其中如下图:
代码如下:
public class He
{ private Mouth mouth;
public Head() {
mouth = new Mouth();
}
}
public class Mouth {
}
聚合的概念是:聚合是比合成关系更弱的一种拥有关系,也表示整体与部分的关系(整体与部分可以分开),
例如,一个奔驰S360汽车,对奔驰S360引擎,奔驰S360轮胎的关系..这些关系就是带有聚合性质的。
因为奔驰S360引擎和奔驰S360轮胎他们只能被奔驰S360汽车所用,离开了奔驰S360汽车,它们就失去了存在的意义。
在我们的设计中,这样的关系不应该频繁出现.这样会增大设计的耦合度。
如图:
代码如下:
public class Car
{
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
}
public class Engine { }