博客
关于我
Java设计模式 —— 桥接模式(Bridge)
阅读量:297 次
发布时间:2019-03-03

本文共 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:

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

转载地址:http://qouq.baihongyu.com/

你可能感兴趣的文章
2021年过氧化工艺试题及答案及过氧化工艺考试平台
查看>>
2021年重氮化工艺考试题库及重氮化工艺考试报名
查看>>
2021年车工(高级)考试总结及车工(高级)试题及答案
查看>>
2021年压力焊证考试及压力焊实操考试视频
查看>>
2021年低压电工考试及低压电工考试申请表
查看>>
2021年低压电工考试及低压电工考试申请表
查看>>
2021年A特种设备相关管理(电梯)考试APP及A特种设备相关管理(电梯)复审考试
查看>>
2021年美容师(初级)考试报名及美容师(初级)新版试题
查看>>
2021年N1叉车司机考试题及N1叉车司机复审模拟考试
查看>>
2021年危险化学品经营单位主要负责人考试APP及危险化学品经营单位主要负责人多少钱
查看>>
2021年T电梯修理考试技巧及T电梯修理模拟考试软件
查看>>
2021年电工(初级)考试及电工(初级)证考试
查看>>
2021年安全员-B证-项目负责人(广东省)新版试题及安全员-B证-项目负责人(广东省)考试试卷
查看>>
2021年安全员-A证-主要负责人(广东省)复审考试及安全员-A证-主要负责人(广东省)操作证考试
查看>>
2021年G1工业锅炉司炉考试报名及G1工业锅炉司炉模拟考试题库
查看>>
大数据学习之Spark——00Spark项目的pom.xml文件
查看>>
大数据学习之Spark——01Spark概述
查看>>
从 MFC 移植程序到 wxWidgets 界面库 ——《定时执行专家 5.0》的界面实现
查看>>
CodeBlocks开发wxWidgets环境配置详细
查看>>
wxSqlite3 和 wxPropertyGrid 类库的说明
查看>>