定义:
合成/聚合复用原则是指在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。这个原则是要求在软件设计中,尽量使用对象组合/聚合,而不是继承关系达到复用的目的。
解决的问题:
- 减少类之间的耦合。
- 提高系统的灵活性和可维护性。
- 有助于保持每个类被封装且聚焦于单一任务。
使用场景:
- 当需要复用现有对象的功能,并且这些对象的功能之间是可交换的时。
- 设计类时,如果使用继承会导致产生大量的子类,增加系统的复杂性。
示例代码:
// 依赖继承的例子
class Engine {
// 发动机的各种实现
}
class Car extends Engine {
// 汽车继承了发动机
}
// 遵守合成/聚合复用原则的重构
class Engine {
// 发动机的各种实现
}
class Car {
private Engine engine; // 聚合关系
public Car(Engine engine) {
this.engine = engine;
}
void setEngine(Engine engine) {
this.engine = engine;
}
}
在这个例子中,遵守合成/聚合复用原则的重构通过在Car
类中聚合Engine
类的方式,代替了Car
继承Engine
的继承关系。这样Car
类可以复用Engine
类的功能,同时保持了灵活性和低耦合。