设计模式-桥接模式(Bridge)
桥接模式是构造型模式之一。把抽象(Abstraction)与行为实现(Implementor)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
角色和职责:
1.抽象类(Abstraction)-Car:
维护对行为实现(Implementor)的引用
2.具体实现(Concrete Abstraction)-Bus、Jeep:
具体实现
3.行为类(Implementor)-Engine:
行为实现类接口
4.行为类具体实现(Concrete Implementor)-Engine2000、Engine2200:
行为类具体实现
UML图:
代码如下:
/** * 行为:安装引擎 */ public interface Engine { void installEngine();//安装引擎 }
/** * 行为:安装引擎2000 */ public class Engine2000 implements Engine{ @Override public void installEngine() { System.out.println("安装引擎2000"); } }
/** * 行为:安装引擎2200 */ public class Engine2200 implements Engine{ @Override public void installEngine() { System.out.println("安装引擎2200"); } }
/** * 汽车 */ public abstract class Car { protected Engine engine;//引擎的引用 public Car(Engine engine){ this.engine = engine; } public abstract void installEngine(); }
/** * bus */ public class Bus extends Car{ public Bus(Engine engine) { super(engine); } @Override public void installEngine() { System.out.print("bus:"); engine.installEngine(); } }
/** * jeep */ public class Jeep extends Car{ public Jeep(Engine engine) { super(engine); } @Override public void installEngine() { System.out.print("jeep:"); engine.installEngine(); } }
public class Main { public static void main(String[] args) { Engine engine2000 = new Engine2000();//引擎2000 Engine engine2200 = new Engine2200();//引擎2200 Car bus2000 = new Bus(engine2000);//bus安装2000引擎 bus2000.installEngine(); Car bus2200 = new Bus(engine2200);//bus安装2200引擎 bus2200.installEngine(); Car jeep2000 = new Jeep(engine2000);//jeep安装2000引擎 jeep2000.installEngine(); Car jeep2200 = new Jeep(engine2200);//jeep安装2200引擎 jeep2200.installEngine(); } }
结果:
bus:安装引擎2000
bus:安装引擎2200
jeep:安装引擎2000
jeep:安装引擎2200
源码地址:https://github.com/qjm201000/design_pattern_bridge.git