Java设计模式 —— 桥接模式(Bridge)
发布日期:2021-05-06 22:42:20 浏览次数:7 分类:技术文章

本文共 2241 字,大约阅读时间需要 7 分钟。

Java设计模式 —— 桥接模式(Bridge)

定义

桥接模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。

特征:

  1. 三个关键词,也就是抽象化、实现化和脱耦
  2. 桥接模式将抽象部分和实现部分分离,解耦
  3. 两个维度,独立变化,灵活的扩展

代码实现

简书:

  • 这里我们通过泡咖啡的例子来简单看看桥接模式的实现和应用
public abstract class Coffee {       protected CoffeeAdditives impl;    public Coffee (CoffeeAdditives impl) {           this.impl = impl;    }    /**     * 咖啡具体是什么样的由子类决定     */    public abstract void makeCoffee();}
  • 咖啡的子类,大杯和小杯,加不加糖的操作通过impl添加进来
//大杯咖啡public class LargeCoffee extends Coffee {       public LargeCoffee(CoffeeAdditives coffeeAdditives) {           super(coffeeAdditives);    }    @Override    public void makeCoffee() {           System.out.println("大杯的" + impl.addSomething() + "咖啡");    }}
//小杯咖啡public class SmallCoffee extends Coffee {       public SmallCoffee(CoffeeAdditives coffeeAdditives) {           super(coffeeAdditives);    }    @Override    public void makeCoffee() {           System.out.println("小杯的" + impl.addSomething() + "咖啡");    }}
  • 下面我们看看实现部分,也就是加不加糖
public abstract class CoffeeAdditives {       /**     * 具体添加什么东西由子类决定     *     * @return 添加的东西,比如加糖     */    public abstract String addSomething();}
  • 加糖和不加糖的子类
//加糖public class Sugar extends CoffeeAdditives {       @Override    public String addSomething() {           return "加糖";    }}
//不加糖,这里就是原味了public class Ordinary extends CoffeeAdditives {       @Override    public String addSomething() {           return "原味";    }}
  • 以上抽象部分和实现部分都完成了,现在我们来看看怎么“泡咖啡”
//原味Ordinary ordinary = new Ordinary();//加糖Sugar sugar = new Sugar();//大杯咖啡,原味LargeCoffee largeCoffee = new LargeCoffee(ordinary);largeCoffee.makeCoffee();//小杯咖啡,原味SmallCoffee smallCoffee = new SmallCoffee(ordinary);smallCoffee.makeCoffee();//大杯咖啡,加糖LargeCoffee largeCoffeeSugar = new LargeCoffee(sugar);largeCoffeeSugar.makeCoffee();//小杯咖啡,加糖SmallCoffee smallCoffeeSugar = new SmallCoffee(sugar);smallCoffeeSugar.makeCoffee();
  • 输出日志

大杯的原味咖啡

小杯的原味咖啡
大杯的加糖咖啡
小杯的加糖咖啡

通过以上的例子我们可以看出桥接模式能够分离抽象与实现,而且扩展也很灵活。比如我们需要添加个中杯的咖啡,只需要在抽象部分,也就是写个Coffee的子类MiddleCoffee就行了,而实现部分,CoffeeAdditives则不受影响。如果咖啡需要加盐或是其他什么的同样也很简单。

外观模式使用问题

优点:

1、抽象和实现的分离。
2、优秀的扩展能力。
3、实现细节对客户透明。

缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

Android中外观模式

AbsListView跟ListAdapter之间就是一个桥接模式。

在这里插入图片描述
另外,Window 与 WindowManager 之间也是桥接模式。

感谢

segmentfault:

菜鸟教程:
百度百科:
博客园:
简书:

上一篇:Java设计模式 —— 组合模式(Composite)
下一篇:Java设计模式 —— 外观模式(Facade)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月23日 04时45分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

2020电工(初级)考试及电工(初级)考试软件 2019-03-03
2020N1叉车司机模拟考试题库及N1叉车司机复审模拟考试 2019-03-03
2020熔化焊接与热切割考试及熔化焊接与热切割考试题库 2019-03-03
2020年G3锅炉水处理报名考试及G3锅炉水处理考试申请表 2019-03-03
2020年制冷与空调设备运行操作答案解析及制冷与空调设备运行操作考试总结 2019-03-03
2020年保育员(初级)考试资料及保育员(初级)新版试题 2019-03-03
2020年茶艺师(高级)考试内容及茶艺师(高级)考试申请表 2019-03-03
2021年过氧化工艺试题及答案及过氧化工艺考试平台 2019-03-03
2021年重氮化工艺考试题库及重氮化工艺考试报名 2019-03-03
2021年车工(高级)考试总结及车工(高级)试题及答案 2019-03-03
2021年压力焊证考试及压力焊实操考试视频 2019-03-03
2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年A特种设备相关管理(电梯)考试APP及A特种设备相关管理(电梯)复审考试 2019-03-03
2021年美容师(初级)考试报名及美容师(初级)新版试题 2019-03-03
2021年N1叉车司机考试题及N1叉车司机复审模拟考试 2019-03-03
2021年危险化学品经营单位主要负责人考试APP及危险化学品经营单位主要负责人多少钱 2019-03-03
2021年T电梯修理考试技巧及T电梯修理模拟考试软件 2019-03-03
2021年电工(初级)考试及电工(初级)证考试 2019-03-03
2021年安全员-B证-项目负责人(广东省)新版试题及安全员-B证-项目负责人(广东省)考试试卷 2019-03-03