橋接模式(Bridge)定義:將抽象部分與它的實現部分分離,使它們均可以獨立的變化。這裏的實現指的是抽象類和它的派生類用來實現本身的對象。java
類型:結構型模式git
順口溜:適裝橋組享代外github
package com.amosli.dp.bridge; public abstract class Abstraction { abstract void operation(Implementor imp); } package com.amosli.dp.bridge; public class RefinedAbstraction extends Abstraction { @Override void operation(Implementor imp) { imp.operationImp(); System.out.println("refined impl.."); } } package com.amosli.dp.bridge; public abstract class Implementor { abstract void operationImp(); } package com.amosli.dp.bridge; public class ConcreteImplementorA extends Implementor { @Override void operationImp() { System.out.println("impl A..."); } } package com.amosli.dp.bridge; public class Client { public static void main(String[] args) { Abstraction abstraction = new RefinedAbstraction(); abstraction.operation(new ConcreteImplementorA()); } }
在如下的狀況下應當使用橋樑模式:
1.若是一個系統須要在構件的抽象化角色和具體化角色之間增長更多的靈活性,避免在兩個層次之間創建靜態的聯繫。
2.設計要求實現化角色的任何改變不該當影響客戶端,或者說實現化角色的改變對客戶端是徹底透明的。
3.一個構件有多於一個的抽象化角色和實現化角色,系統須要它們之間進行動態耦合。
4.雖然在系統中使用繼承是沒有問題的,可是因爲抽象化角色和具體化角色須要獨立變化,設計要求須要獨立管理這二者。
總結:
Bridge模式是一個很是有用的模式,也很是複雜,它很好的符合了開放-封閉原則和優先使用對象,而不是繼承這兩個面向對象原則。ide
本系列文章源碼地址,https://github.com/amosli/dp 歡迎Fork & Star !!spa