基本介绍

  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. UiPath文本操作Get Full Text的介绍和使用

    一.Get Full Text操作的介绍 使用Get Full Text(获取全文本 )屏幕抓取方法从指示的UI元素中提取字符串及其信息 二.Get Full Text在UiPath中的使用 1. 打 ...

  2. FS2K人脸素描属性识别

    人脸素描属性识别 代码:https://github.com/linkcao/FS2K_extract 问题分析 需要根据FS2K数据集进行训练和测试,实现输入一张图片,输出该图片的属性特征信息,提取 ...

  3. nginx启动失败/报错(bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket...permissions) nginx启动失败

    出现这个问题是因为80端口被占用了 1.cmd输入命令netstat -aon|findstr "80" 2..查看80端口 16356对应的任务 输入命令 tasklist|fi ...

  4. C# --- SqlserverHelper帮助类、快速实现增删改查

    using System;using System.Data; using System.Data.SqlClient; namespace Demo.WorkerService { public c ...

  5. 动态树 — Link_Cut_Tree

    [模板]动态树(Link Cut Tree) Link-cut-tree是一种维护动态森林的数据结构,在需要动态加边/删边的时候就需要LCT来维护. Link-cut-tree的核心是轻重链划分,每条 ...

  6. HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅

    2022年6月,HMS Core机器学习服务面向开发者提供一项全新的开放能力--同声传译,通过AI语音技术减少资源成本,加强沟通交流,旨在帮助开发者制作丰富多样的同声传译应用. HMS Core同声传 ...

  7. 一切皆为字节和字节输出流_OutputStream类&FileOutputStream类介绍

    一切皆为字节 一切文件数据(文本.图片.视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此.所以,字节流可以传输任意文件数据.在操作流的时候,我们要时刻明确,无论使用什 ...

  8. 多校B层冲刺NOIP20211110 字符配对游戏

    原题 问题描述 操场边,运动会没有项目的同学也没闲着,经过几天的研究,他们发明了一个很有意思的字符串配对游戏,两位同学准备两张白纸,第一个同学在纸上写一个整数N和一个由小写字母组成的字符串S,将S重复 ...

  9. 第二十天python3 正则表达式

    正则表达式 Regular Expression,缩写为regex.regexp.RE等:分类 1.BRE 基本正则表达式,grep.sed.vi等软件支持,vim有扩展: 2.ERE 扩展正则表达式 ...

  10. 小试牛刀:Go 反射帮我把 Excel 转成 Struct

    背景 起因于最近的一项工作:我们会定义一些关键指标来衡量当前系统的健康状态,然后配置对应的报警规则来进行监控报警.但是当前的报警规则会产生大量的误报,需要进行优化.我所负责的是将一些和用户行为指标相关 ...