《Android源碼設計模式》讀書筆記 (24) 第24章 橋接模式

正文

  • 定義:將抽象部分與實現部分分離,使它們都可以獨立地進行變化
  • 使用場景:
    如果一個系統需要在構件的抽象化角色和具體化角色之間增加更多的靈活性,避免在兩個層次之間建立靜態的繼承聯繫,可以通過橋接模式使它們在抽象層建立一個關聯關係.
  • 優點:分離抽象與實現\靈活的擴展以及對客戶來說透明的實現等.

UML類圖

這裏寫圖片描述

  • Abstraction:抽象部分,該類保持一個對實現部分對象的引用,抽象部分中的方法需要調用實現部分的對象來實現,該類一般爲抽象類.
/**
 * 抽象部分的實現
 * Created by max on 2016/4/13.
 */
public class Abstraction {
    private Implementor mImplementor;//聲明一個私有成員變量引用實現部分的對象

    public Abstraction(Implementor mImplementor) {
        this.mImplementor = mImplementor;
    }

    /**
     * 通過調用實現部分具體的方法實現具體的功能
     */
    public void operation(){
        mImplementor.operatoinImpl();
    }
}
  • RefinedAbstraction:優化的抽象部分,抽象部分的具體實現,該類一般是對抽象部分的方法進行完善和擴展.
/**
 * 抽象部分的子類
 * Created by max on 2016/4/13.
 */
public class RefinedAbstraction extends Abstraction{

    public RefinedAbstraction(Implementor mImplementor) {
        super(mImplementor);
    }

    /**
     * 對父類抽象部分中的方法進行擴展
     */
    public void refinedOperation(){
        //對Abstraction中的方法進行擴展
    }
}
  • Implementor:實現部分.可以爲接口或抽象類,其方法不一定要與抽象部分中的一致,一般情況下是由實現部分提供基本的操作,而抽象部分定義的規則是基於實現部分這些基本操作的業務方法
/**
 * 實現部分的抽象接口
 * Created by max on 2016/4/13.
 */
public interface Implementor {
    /**
     * 實現抽象部分的具體方法
     */
    public void operatoinImpl();
}
  • ConcreteImplementorA:實現部分的具體實現.完善實現部分中方法定義的具體邏輯.
/**
 * 實現部分的具體實現一
 * Created by max on 2016/4/13.
 */
public class ConcreteImplementorA implements Implementor{
    @Override
    public void operatoinImpl() {
        //具體的實現
    }
}
  • Client:客戶端調用
/**
 * 客戶端調用
 * Created by max on 2016/4/13.
 */
public class Client {
    public static void main(String[] args){
        //客戶端調用邏輯
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章