【设计模式笔记】结构型--桥接模式

桥接(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");
    }

}
相关文章
相关标签/搜索