Java設計模式之十五(橋接模式)

一、什麼是橋接模式

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發動引擎


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章