1. 程式人生 > >設計模式——橋梁模式

設計模式——橋梁模式

部分 引用 抽象 pos 軟件 this mar png protected

  • 橋梁模式定義

    將抽象和實現解耦,使得二者可以獨立變化

所謂耦合,就是兩個實體的行為的某種強關聯。而將它們的強關聯去掉,就是耦合的解脫,或稱脫耦。在這裏,脫耦是指將抽象化和實現化之間的耦合解脫開,或者說是將它們之間的強關聯改換成弱關聯。
將兩個角色之間的繼承關系改為聚合關系,就是將它們之間的強關聯改換成為弱關聯。因此,橋梁模式中的所謂脫耦,就是指在一個軟件系統的抽象化和實現化之間使用組合/聚合關系而不是繼承關系,從而使兩者可以相對獨立地變化。這就是橋梁模式的用意。

技術分享圖片

  • 橋接模式角色
    1.Abstraction 抽象化角色
    主要職責是定義出該角色的行為,同事保存一個隊實現話角色的引用,一般為抽象類
    2.Implementor實現化角色
    接口或者抽象類,定義必須的行為和屬性
    3.RefinedAbstracction修正抽象畫角色
    它引用是實現化角色對抽象化角色進行修正。
    4.ConcreteImplementor具體實現化角色
    他的實現接口或者抽象類定義的方法和屬性

  • 代碼實例

     public abstract class Abstraction {
    
    protected Implementor impl;
    
    public Abstraction(Implementor impl){
        this.impl = impl;
    }
    //示例方法
    public void operation(){
        
        impl.operationImpl();
    }
}
    public class RefinedAbstraction extends Abstraction {
    
    public RefinedAbstraction(Implementor impl) {
        super(impl);
    }
    //其他的操作方法
    public void otherOperation(){
        
    }
}
    public abstract class Implementor {
    /**
     * 示例方法,實現抽象部分需要的某些具體功能
     */
    public abstract void operationImpl();
}
     public class ConcreteImplementorA extends Implementor {

    @Override
    public void operationImpl() {
        //具體操作
    }

}
     public class ConcreteImplementorB extends Implementor {

    @Override
    public void operationImpl() {
        //具體操作
    }

}

- 使用場景

  考慮這樣一個實際的業務功能:發送提示消息。基本上所有帶業務流程處理的系統都會有這樣的功能,比如OA上有尚未處理完畢的文件,需要發送一條消息提示他。

  從業務上看,消息又分成普通消息、加急消息和特急消息多種,不同的消息類型,業務功能處理是不一樣的,比如加急消息是在消息上添加加急,而特急消息除了添加特急外,還會做一條催促的記錄,多久不完成會繼續催促;從發送消息的手段上看,又有系統內短消息、手機短信息、郵件等。

設計模式——橋梁模式