桥接模式


1. 类图

image.png

  • Abstraction:抽象部分的接口。维护一个实现部分的对象引用,抽象对象里面的方法,需要调用实现部分的对象来完成
  • RefinedAbstraction:扩展抽象部分的接口。定义跟实际业务相关的方法,这些方法通常使用Abstraction中定义的方法,也可能需要调用实现部分的对象来完成
  • Implementor:定义实现部分的接口。
  • ConcreteImplementor:实现Implementor接口的对象

2. 示例

image

2.1 接口

public interface Color {
    void paint(String penType, String name);
}

2.2 接口实现

public class Blue implements Color {
    public void paint(String penType, String name) {
        System.out.println(penType + "画蓝色的" + name);
    }
}

public class Red implements Color {
    public void paint(String penType, String name) {
        System.out.println(penType + "画红色的" + name);
    }
}

2.3 抽象类

public abstract class AbstracePen {
    // 持有接口的引用
    protected Color color;
    protected void setColor(Color color){this.color = color;}
    public abstract void draw(String name);
}

2.4 抽象实现

public class BigPen extends AbstracePen {
    public void draw(String name) {
        String penType = "大号笔";
        this.color.paint(penType,name);
    }
}

public class SmallPen extends AbstracePen {
    public void draw(String name) {
        String penType = "小号笔";
        this.color.paint(penType,name);
    }
}

2.5 客户端

public class Client {
    public static void main(String[] args) {
        Red red = new Red();
        BigPen bigPen = new BigPen();

        bigPen.setColor(red);
        bigPen.draw("鲜花");
    }
}

3. 优点

  • 分离抽象和实现部分
    • 让抽象部分和实现部分分别定义接口,有助于系统分层,可以产生更好的结构化系统
  • 更好的扩展性
    • 抽象和实现可以分别独立扩展
  • 可动态切换实现
  • 可减少子类数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值