将抽象和具体实现两个维度分离,让他们独立发展,并且在抽象类里聚合一个具体实现,通过聚合替代继承,用于解决类爆炸的问题。

这种模式要求对系统的抽象的理解和设计难度都比较大。

例子:

这里要对花,气球等装饰物进行显示,可以显示一个装饰物,也可以显示多个装饰物,那么将装饰物作为具体实现,将显示作为抽象类,在抽象类里有一个装饰物的引用,对抽象类进行扩展可以进行多次显示,对具体实现扩展为不同类型装饰物。

Display,NumberDisplay

DisplayImpl, FlowerDisplayImpl, BalloonDisplayImpl

具体代码:

public class Display {private DisplayImpl displayImpl;public Display(DisplayImpl displayImpl) {this.displayImpl = displayImpl;}public void print() {displayImpl.print();}public void show() {print();}
}
public abstract class DisplayImpl {abstract void print();
}
public class NumberDisplay extends Display{public NumberDisplay(DisplayImpl displayImpl) {super(displayImpl);}/*** 要多次显示* @param time*/public void showManyTimes(int time) {if (time>0) {for (int i = 0; i < time; i++) {show();}}}
}
public class FlowerDisplayImpl extends DisplayImpl{/** 花名 */private String name;public FlowerDisplayImpl(String name) {this.name = name;}@Overridevoid print() {System.out.println("Flower " + name);}
}
public class BalloonDisplayImpl extends DisplayImpl{/** 颜色 */private String color;public BalloonDisplayImpl(String color) {this.color = color;}@Overridevoid print() {System.out.println("Balloon " + color);}
}

测试场景:我要显示Rose花,显示各种颜色的气球,还要显示多个。

public class Test {public static void main(String[] args) {FlowerDisplayImpl flower = new FlowerDisplayImpl("Rose");BalloonDisplayImpl balloon = new BalloonDisplayImpl("red");Display display = new Display(flower);display.show();display = new Display(balloon);display.show();NumberDisplay numberDisplay = new NumberDisplay(flower);numberDisplay.showManyTimes(101);balloon = new BalloonDisplayImpl("green");numberDisplay = new NumberDisplay(balloon);numberDisplay.showManyTimes(20);balloon = new BalloonDisplayImpl("yellow");numberDisplay = new NumberDisplay(balloon);numberDisplay.showManyTimes(20);}
}

Java 设计模式之Bridge桥接模式相关推荐

  1. 《Java设计模式》之桥接模式

    Bridge模式的概念 Bridge 模式是构造型的设计模式之中的一个.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任.它的主要特点是把抽象(abst ...

  2. JAVA设计模式初探之桥接模式

    生活中的一个例子:    拿汽车在路上行驶的来说.既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶.这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也 ...

  3. 重学 Java 设计模式:实战桥接模式「多支付渠道(微信、支付宝)与多支付模式(刷脸、指纹)场景」

    作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获!

  4. C++设计模式-Bridge桥接模式

    作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化. 将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式 ...

  5. Scala 与设计模式(六):Bridge 桥接模式

    相信大家都玩过「俄罗斯方块」吧. 小罗年幼时最喜欢玩的就是俄罗斯方块.作为一个有情怀的程序员,小罗决定尝试实现这款游戏. 玩过俄罗斯方块的人都会知道,俄罗斯方块由七种简单形状组成: I.J.L.O.S ...

  6. Java设计模式(装饰者模式-组合模式-外观模式-享元模式)

    Java设计模式Ⅳ 1.装饰者模式 1.1 装饰者模式概述 1.2 代码理解 2.组合模式 2.1 组合模式概述 2.2 代码理解 3.外观模式 3.1 外观模式概述 3.2 代码理解 4.享元模式 ...

  7. python的编程模式-实例解析Python设计模式编程之桥接模式的运用

    这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #encoding=utf-8 # #by panda ...

  8. java设计模式4--建造者模式(Builder)

    本文地址:http://www.cnblogs.com/archimedes/p/java-builder-pattern.html,转载请注明源地址. 建造者模式 将一个复杂对象的构建与它的表示分离 ...

  9. Java设计模式-观察者模式(订阅发布模式)

    Java设计模式-观察者模式(订阅发布模式) 一起来看 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持吧!! ...

最新文章

  1. 假如我是JAVA面试官,我会这样虐你
  2. linux安装mysql 5.7_linux安装mysql5.7
  3. Windows32下安装Ruby 2.7.2【记录安装过程】
  4. word中软回车和硬回车删除、替换
  5. c语言.jpg图片转成数组_图片可以转Word吗?教你两种方法轻松转换
  6. postgresql 高可用 repmgr 的使用之四 1 Primary + 1 Standby 的 switchover
  7. 让理科生沉默,让文科生落泪的题
  8. python 期货现货差价监测_基差,即期货与现货之间价格之差
  9. 通过MIME标准实现无插件极速生成多Sheet Excel文件
  10. 如何把图片缩小到30k?怎么压缩图片体积大小?
  11. 安装程序无法更新计算机配置,无法安装某些更新或程序
  12. 互联网公司各个岗位的薪资对比
  13. Java:JSON解析工具-json-lib
  14. 挑战深度学习 《深度森林:探索深度神经网络以外的方法》
  15. fms5序列号_FMS 开发 准备
  16. flink从入门到精通-flink简介
  17. 用例图分析---账号管理系统
  18. 布隆的盾能挡机器人的q吗_没有属性加成的技能,蒙多的Q,机器人的W,布隆的E,那R呢?...
  19. 软件构造复习笔记(四)数据类型与类型检验
  20. Word 中公式不能自动斜体的解决方法

热门文章

  1. 【英语学习】【WOTD】newspeak 释义/词源/示例
  2. Android自定义View构造函数详解
  3. t3显示乱码_打开T3出现乱码是什么原因,如下图
  4. python 运行时 变量_python运行过程,变量,符号
  5. java socket群聊_java socket来实现私聊和群聊-简易版
  6. UE4 蓝图RandomStreams
  7. MySQL设置当前时间为默认值的方法
  8. telerik:RadTreeView树形菜单鼠标放上去展开菜单
  9. virtualbox版oracle RAC环境搭建
  10. MATLAB学习笔记(九)