基本介绍

  1. 桥接模式(Bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变
  2. 是一种结构型设计模式
  3. 说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需要将两个维度抽象出来,然后让其通过对象进行组合,来减少类的创建

用手机来举例

当前有两个维度:1. 品牌; 2. 样式
品牌:小米 华为 Vivo等
手机样式:直板机、滑盖机、翻盖机等

先定义品牌维度接口

public interface Brand {
// 品牌口号
String brandVoice();
}
定义一个品牌小米
public class Xiaomi implements Brand {
@Override
public String brandVoice() {
return "为发烧而生...";
}
}

在定义样式接口

public interface PhoneStyle {
// 手机样式
String style();
}
定义电话类
public abstract class Phone {
//组合品牌
private Brand mBrand; //构造器
public Phone(Brand mBrand) {
this.mBrand = mBrand;
} protected void open(){
this.mBrand.brandVoice();
System.out.println("phone open");
} protected void close(){
this.mBrand.brandVoice();
System.out.println("phone close");
} protected void call(){
this.mBrand.brandVoice();
System.out.println("phone call");
} }

定义具体的Phone类

//折叠式手机类,继承抽象类Phone
public class FoldedPhone extends Phone implements PhoneStyle {
//构造器
public FoldedPhone(Brand mBrand) {
super(mBrand);
} public void open(){
super.open();
style();
} public void close(){
super.close();
style();
} public void call(){
super.call();
style();
} @Override
public String style() {
return "折叠式手机";
}
}
使用
public class Client {
public static void main(String[] args){
//获取折叠式手机(样式+品牌)
Phone phone1 = new FoldedPhone(new Xiaomi());
phone1.open();
phone1.call();
phone1.close();
}
}
这就使桥接模式,从类图上可以看出,一个抽象类带一个接口飞的样子,其实还可以继续抽象,不过再抽象就接近装饰者模式了

设计模式——桥接模式(Bridge模式)的更多相关文章

  1. 设计模式(7)-结构型模式-Bridge模式

    2.结构性模式 2.2  BRIDGE模式 别名:handle/body 这个模式体现了组合相对于继承的优势. 2.2.1动机 当一个抽象可能有多个实现时,通经常使用继承来协调它们.抽象类定义对该抽象 ...

  2. 桥接模式/bridge模式/对象结构型

    意图 将抽象部分与它的实现部分分离,使它们都可以独立的变化. 动机 当一个抽象类有多个实现时,通常用继承来协调它们.但是继承机制将抽象和实现固定,难以对抽象部分和实现部分独立地进行修改.扩充和重用. ...

  3. 【转】Docker网络模式--默认模式bridge模式

    一 引言 当 Docker 启动时,会自动在主机上创建一个名为 docker0 虚拟网桥,这实际上就是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发.系 ...

  4. Bridge模式

    Bridge模式 Bridge模式 在面向对象的开发过程中,要做到2点:1.高内聚(cohesion).2.松耦合(coupling).可是在实际开发过程中难以把握,比如会遇到这种问题: 1)客户给了 ...

  5. 转:设计模式-----桥接模式(Bridge Pattern)

    转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...

  6. [设计模式] 7 桥接模式 bridge

    #include<iostream> using namespace std; class AbstractionImp { public: virtual ~AbstractionImp ...

  7. 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)

    原文:乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) 作者:webabcd 介绍 ...

  8. 设计模式 -- 桥接模式(Bridge Pattern)

    桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合, ...

  9. 设计模式的征途—8.桥接(Bridge)模式

    在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔.假设我们需要大.中.小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支.但如果使用毛笔的话,只需要提供3 ...

  10. 【设计模式】Bridge模式(桥接模式)

    最近的一次面试中,被问到桥接模式,以前呢并没有很仔细的研究过这个设计模式,借此机会剖析一下. 先给出自己对这个模式理解后的源码: interface A{ void methodA(); } inte ...

随机推荐

  1. Error: $controller:ctrlreg A controller with this name is not registered.

    The controller with the name 'SomeController' is not registered.名称为'SomeController'的控制器没注册 : Descrip ...

  2. 【RPA之家转载】苏桦 华为RPA 企业财务实践:RPA与AI结合,实现百万级票据、合同处理自动化

    [RPA之家转载]苏桦 华为RPA 企业财务实践:RPA与AI结合,实现百万级票据.合同处理自动化 看到大会的主题,说每一位开发者都了不起,说白了我也非常的感触,因为我自己本身也是一个开发者,我从01 ...

  3. Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例

    ​  目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...

  4. Could not transfer artifact xxx from/to xxx解决方案

    maven中默认的镜像加载是这个 在setting.xml文件中 <mirror> <id>nexus</id> <mirrorOf>*</mir ...

  5. Linux操作系统(4):磁盘分区、挂载

    Outline: ① lsblk :查看所有设备挂载情况 ② df -h :查询系统整体磁盘使用情况 ③ du -h /目录 :查询指定目录的磁盘占用情况 ④ mount :查询系统中已经挂载的设备 ...

  6. 用cmd命令进行磁盘清理(主要是系统盘)

    作用:清理磁盘(主要是系统盘)中不需要的垃圾文件操作方法: 第一步:Windows键+R键 调出cmd命令窗口(窗口图如下:) 第二步:输入框中输入cmd命令,按下Enter键,进入如下图界面: 第三 ...

  7. python使用技巧

    当存在一个列表你需要将列表中的元素转为对应字典时,如何操作? 例如将["a", 1]变成{"a": 1} data = ["a", 1] d ...

  8. 使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_132 最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用 ...

  9. Python算法之动态规划(Dynamic Programming)解析:二维矩阵中的醉汉(魔改版leetcode出界的路径数)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_168 现在很多互联网企业学聪明了,知道应聘者有目的性的刷Leetcode原题,用来应付算法题面试,所以开始对这些题进行" ...

  10. Linux 系统时间同步服务器配置

    # Linux 时间同步 # 查看系统时间: date # 查看硬件日期 # ntp 软件 # chrony 软件 chrony比ntp更精确 # 利用ntp手动瞬间同步时间: ntpdate 172 ...