设计模式-桥接模式(Bridge)

匿名 (未验证) 提交于 2019-12-02 23:03:14

桥接模式是构造型模式之一。把抽象(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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!