桥接模式核心:处理多层继承结构,处理多维度变化的场景。将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。
桥接模式特点: 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则。复用性较差。类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。 桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。 就像一个桥将两个变化的维度连接起来。各个维度都可以独立的变化,故称之为桥模式。
应用: JDBC驱动程序
AWT的peer架构
OA系统中的消息处理。
桥接模式的优点:
将实现与抽象解耦,不再与界面之间绑定。
抽象和实现可以独立的扩展,不会影响到对方。
对于具体的抽象类所做的改变不会影响到客户端的使用。
Demo:
package com.wxisme.bridge;/** * 品牌类型维度 * @author Administrator * */public interface Brand { void sale();}class Lenovo implements Brand { @Override public void sale() { System.out.println("联想电脑"); } }class Dell implements Brand { @Override public void sale() { System.out.println("戴尔电脑"); } }class Shenzhou implements Brand { @Override public void sale() { System.out.println("神州电脑"); } }/** * 电脑类型维度 * @author Administrator * */public class Computer { protected Brand brand; public Computer(Brand b) { this.brand = b; } public void sale(){ brand.sale(); } }class Desktop extends Computer { public Desktop(Brand b) { super(b); } @Override public void sale() { super.sale(); System.out.println("台式电脑"); }}class Laptop extends Computer { public Laptop(Brand b) { super(b); } @Override public void sale() { super.sale(); System.out.println("笔记本电脑"); }}public class Client { public static void main(String[] args) { Computer c1 = new Laptop(new Lenovo()); c1.sale(); Computer c2 = new Desktop(new Shenzhou()); c2.sale(); }}
运行结果:
联想电脑笔记本电脑神州电脑台式电脑