1. 程式人生 > >設計模式-橋接模式(Bridge)

設計模式-橋接模式(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