【設計模式筆記】結構型--橋接模式

橋接(Bridge)模式

  將抽象與實現部分分離,使得他們均可以獨立的變化。又稱爲接口(Interface)模式ide

       體現了單一職責、開閉、合成複用、里氏代換、依賴倒轉原則。this

如何使用:

  一、識別出一個類所具備的兩個獨立變化的維度,將他們設計成兩個獨立的繼承等級結構;爲兩個維度都提供抽象層,並創建抽象耦合;spa

結構圖

Abstraction: 定義抽象類接口,通常是抽象類不是接口;同時定義一個Implementor類型對象,關聯關係操作系統

RefinedAbstraction:實現抽象類聲明的抽象業務方法,並能夠調用在Implementor中定義的業務方法;設計

Implementor: 定義類接口,僅對操做作聲明,具體子類去實現;3d

ConcreteImplementor:具體實現類;程序運行時,會替換到父類對象,提供給抽象類具備的業務操做方法;unix

 典型樣例

代碼樣例

 

public class Client {
    // 客戶端經過靈活綁定不一樣的操做系統類Impl
    public static void main(String args[]) 
{
        // TODO: 此處應該實現成XML讀取,並藉助反射實例化上述類      

     Image image = new JPGImage();
 ImageImpl impl = new LinuxImpl(); 
 image.setImageImpl(impl); File file = new File(""); image.parseFile(file); } }

抽象操做系統實現類接口code

public interface ImageImpl {
    public void doPaint();
}

具體實現類對象

public class LinuxImpl implements ImageImpl{

    @Override
    public void doPaint() 
    {
        System.out.println("在Linux環境繪製");        
    }
}

public class UnixImpl implements ImageImpl{

    @Override
    public void doPaint() {
        System.out.println("在unix環境繪製");        
    }

}

public class WindowsImpl implements ImageImpl {

    @Override
    public void doPaint() {
        System.out.println("在Windows環境繪製");        
    }

}

圖象抽象類blog

public abstract class Image {
    
    protected ImageImpl impl;
    
    public void setImageImpl(ImageImpl impl) 
    {
        this.impl = impl;
    }
    
// 子類中調用傳入的ImageImpl實例化類,完成靈活的不用操做系統實現體的調用
public abstract void parseFile(File filename); }

具體實現類

public class JPGImage extends Image {

    @Override
    public void parseFile(File filename) {
        impl.doPaint();
        System.out.println("File type: JPG" );
    }

}

public class PNGImage extends Image {

    @Override
    public void parseFile(File filename) {
        impl.doPaint();
        System.out.println("File type: PNG");
    }

}
相關文章
相關標籤/搜索