1. 程式人生 > 實用技巧 >「HAOI2016」找相同字元

「HAOI2016」找相同字元

設計模式之橋接模式

橋接模式定義:將抽象和實現解耦,使得兩者可以獨立變化

關鍵點: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.橋接模式的使用場景

  •   不希望或者不適合使用繼承的場景
  •   抽象或者抽象類不穩定的場景
  •   重要性要求較高的場景

橋接模式的意圖還是對變化的封裝,儘量把可能變化的因素封裝到最細,最小的邏輯單元之中,避免風險擴散