一、什麼是橋接模式
Bridge 模式又叫做橋接模式,是構造型的設計模式之一。Bridge模式基於類的最小設計原則,通過使用封裝,聚合以及繼承等行爲來讓不同的類承擔不同的責任。它的主要特點是把抽象(abstraction)與行爲實現(implementation)分離開來,從而可以保持各部分的獨立性以及應對它們的功能擴展。
二、橋接模式的結構
三、橋接模式的角色和職責
Client
Bridge模式的使用者
Abstraction
抽象類接口(接口或抽象類)
維護對行爲實現(Implementor)的引用
Refined Abstraction
Abstraction子類
Implementor
行爲實現類接口 (Abstraction接口定義了基於Implementor接口的更高層次的操作)
ConcreteImplementor
Implementor子類
代碼實現:
Implementor類:
package com.qianyan.bridge;
public interface Engine {
/**
* 安裝發動引擎
*/
public void installEngine();
}
ConcreteImplementor類:
package com.qianyan.bridge;
public class Engine2000 implements Engine {
@Override
public void installEngine() {
System.out.println("安裝2000CC發動引擎");
}
}
package com.qianyan.bridge;
public class Engine2200 implements Engine {
@Override
public void installEngine() {
System.out.println("安裝2200CC發動引擎");
}
}
Abstraction類:
package com.qianyan.bridge;
public abstract class Car {
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
public abstract void installEngine();
}
Refined Abstraction類:
package com.qianyan.bridge;
public class Bus extends Car {
public Bus(Engine engine) {
super(engine);
}
@Override
public void installEngine() {
System.out.print("Bus:");
this.getEngine().installEngine();
}
}
package com.qianyan.bridge;
public class Jeep extends Car {
public Jeep(Engine engine) {
super(engine);
}
@Override
public void installEngine() {
System.out.print("Jeep:");
this.getEngine().installEngine();
}
}
Client類:
package com.qianyan.bridge;
public class MainClass {
public static void main(String[] args) {
Engine engine2000 = new Engine2000();
Engine engine2200 = new Engine2200();
Car bus = new Bus(engine2000);
bus.installEngine();
Car jeep = new Jeep(engine2200);
jeep.installEngine();
}
}
Result:
Bus:安裝2000CC發動引擎
Jeep:安裝2200CC發動引擎