何为合成复用原则
总体思想:优先选择组合或聚合,尽量不用继承
具体讲解:在一个对象中尽可能的使用一些已有的对象,从而达到复用已有功能的效果
在此,可能会有小伙伴表示不理解,但没关系,请往下看。
加深合成复用原则印象
此处,我们将会通过案例的方式来让读者进一步加深对合成复用原则的印象。
案例分析
此处,我们以汽车这一案例来讲解合成复用原则。
总体思路:汽车类ColoredCar复用了 类型类Type 和 颜色类Color,实现了对汽车类型和颜色的分离,可以轻易的改变汽车类型和颜色,无需改动原有的代码。
若不使用合成复用原则,则需要汽车类ColoredCar 来继承 类型类Type,在此基础上添加颜色这一属性。这导致了ColoredCar类 与 Type类 存在紧耦合关系,同时在为其他车添加不同颜色的同时需要创建大量的类,显得十分的繁琐而又无意义。
案例代码显示
类型类:汽车的类型
public class Type {
private String type;
public Type(String type) {
this.type = type;
}
public String getType() {
return type;
}
}
颜色类:汽车的颜色
public class Color {
private String color;
public Color(String color) {
this.color = color;
}
public String getColor() {
return color;
}
}
汽车类
public class Car {
private Type type;
private Color color;
public Car(Type car, Color color) {
this.type = car;
this.color = color;
}
public void sayColoredCar(){
System.out.println("这是一辆"+color.getColor()+"的"+ type.getType());
}
}
代码的实现
public class test {
public static void main(String[] args) {
Car car = new Car(new Type("迈凯伦"),new Color("红色"));
car.sayColoredCar();
}
}
结果展示
这是一辆红色的迈凯伦