桥接模式
桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
举个栗子。
车企生产汽车,有不同类型以及不同颜色,例如生产suv,吉普车,轿车,颜色以红色与黄色举例。
遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。
桥接(Bridge)模式的优点是:
- 抽象与实现分离,扩展能力强
- 符合开闭原则
- 符合合成复用原则
- 其实现细节对客户透明
所以在学习设计模式的时候发现与设计原则在很大程度上有共通点。
代码如下:
public class BridgeTest {
public static void main(String[] args) {
// 新建黄色的吉普车
JeepCar jeepCar = new JeepCar();
jeepCar.setCar(new Yellow());
System.out.println(jeepCar.getName());
// 新建红色的吉普车
SuvCar suvCar = new SuvCar();
suvCar.setCar(new RedColor());
System.out.println(suvCar.getName());
}
}
interface Color {
String getColor();
}
interface Car {
void setCar(Color color);
String getName();
}
class SuvCar implements Car {
private Color color;
@Override
public void setCar(Color color) {
this.color = color;
}
@Override
public String getName() {
return "这是" + color.getColor() + "的" + "suv";
}
}
class JeepCar implements Car {
private Color color;
@Override
public void setCar(Color color) {
this.color = color;
}
@Override
public String getName() {
return "这是" + color.getColor() + "的" + "吉普车";
}
}
class RedColor implements Color {
@Override
public String getColor() {
return "红色";
}
}
class Yellow implements Color {
@Override
public String getColor() {
return "黄色";
}
}
参考资料:
1.http://c.biancheng.net/view/1364.html
代码地址:https://gitee.com/zhoujie1/design-mode-and-principle.git