1.核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联
2.备注:桥接模式可以取代多层继承的方案。多层继承违背了单一职责的原则,复用性较差,会导致类的数量显著增多。使用桥接模式可以极大的减少子类的个数,降低管理和维护成本
桥接模式极在的提高了系统可展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合ocp原则
3.
4.示例代码:
<1>品牌
public interface Brand {
void sale();
}
class Lenovo implements Brand{
@Override
public void sale() {
System.out.println("销售联想电脑");
}
}
class Hansee implements Brand{
@Override
public void sale() {
System.out.println("销售神舟电脑");
}
}
class Dell implements Brand{
@Override
public void sale() {
System.out.println("销售dell电脑");
}
}
<2>桥接角色
public class Computer {
protected Brand brand;
public Computer(Brand brand) {
super();
this.brand = brand;
}
public void sale(){
brand.sale();
}
}
class DeskTop extends Computer{
public DeskTop(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}
class LabTop extends Computer{
public LabTop(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售笔记本");
}
}
<3>客户端
public class Client {
public static void main(String[] args) {
Computer c1=new DeskTop(new Lenovo());
c1.sale();
Computer c2=new LabTop(new Hansee());
c2.sale();
}
}
//执行结果
销售联想电脑
销售台式机
销售神舟电脑
销售笔记本
上面示例利用组合的方式替代了多层继承的方式,实现computer和Brand的独立变化,扩展性增强,符合ocp原则和单一职责原则。