perf Examples【轉】
阿新 • • 發佈:2020-08-18
設計模式之橋接模式
橋接模式定義:將抽象和實現解耦,使得兩者可以獨立變化
關鍵點:1.分離抽象和具體 2.用聚合方式(橋)連線抽象和具體
用的不多,瞭解即可
橋樑模式通過類圖
Abstraction:抽象化角色
它的主要職責是定義出該角色的行為,同時儲存一個對實現化角色的引用,該角色一般是抽象類
Implementor:實現化角色
它是介面或者抽象類,定義角色必需的行為和屬性。
RefinedAbstraction:抽象化角色的具體
ConcreteImplementor:實現化角色的具體
2.橋接模式通用原始碼
2.1 實現化角色
public interface Implementor { void doSomething(); void doAnything(); }
2.2 建立實現化角色具體
public class ConcreteImplementor1 implements Implementor { @Override public void doSomething() { // 業務邏輯處理 } @Override public void doAnything() { // 業務邏輯處理 } }
2.3 建立 抽象化角色
public abstract class Abstraction { // 定義對實現化角色的引用 private Implementor implementor; public Abstraction(Implementor implementor) { this.implementor = implementor; } // 自身的行為和屬性 public void request() { this.implementor.doSomething(); } // 實現化角色 public Implementor getImplementor() { return implementor; } }
2.4 建立抽象化角色具體
public class RefineAbstraction extends Abstraction { public RefineAbstraction(Implementor implementor) { super(implementor); } // 修正父類的行為 @Override public void request() { super.request(); super.getImplementor().doAnything(); } }
2.5 建立Client呼叫
public class Client { public static void main(String[] args) { // 定義一個實現化角色 Implementor implementor = new ConcreteImplementor1(); // 定義一個抽象化角色 Abstraction abstraction = new RefineAbstraction(implementor); // 執行程式碼 abstraction.request(); } }
3.橋接模式的優點
- 抽象和實現分類:為了解決繼承的缺陷而提出的設計模式
- 優秀的擴充能力
- 實現細節歸客戶透明
4.橋接模式的使用場景
- 不希望或者不適合使用繼承的場景
- 抽象或者抽象類不穩定的場景
- 重要性要求較高的場景
橋接模式的意圖還是對變化的封裝,儘量把可能變化的因素封裝到最細,最小的邏輯單元之中,避免風險擴散