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

桥接(Bridge)模式

  将抽象与实现部分分离,使得他们都可以独立的变化。又称为接口(Interface)模式

       体现了单一职责、开闭、合成复用、里氏代换、依赖倒转原则。

如何使用:

  1、识别出一个类所具有的两个独立变化的维度,将他们设计成两个独立的继承等级结构;为两个维度都提供抽象层,并建立抽象耦合;

结构图

Abstraction: 定义抽象类接口,一般是抽象类不是接口;同时定义一个Implementor类型对象,关联关系

RefinedAbstraction:实现抽象类声明的抽象业务方法,并可以调用在Implementor中定义的业务方法;

Implementor: 定义类接口,仅对操作做声明,具体子类去实现;

ConcreteImplementor:具体实现类;程序运行时,会替换到父类对象,提供给抽象类具有的业务操作方法;

 典型样例

代码样例

 

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);    
    }    
}

抽象操作系统实现类接口

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环境绘制");        
    }

}

图象抽象类

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

}

 

转载于:https://www.cnblogs.com/clarino/p/10068399.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值