如何更好的理解设计模式之桥接模式

桥接模式

点奶茶的时候, 我们一般选择原味奶茶/牛奶奶茶/咸味奶茶

现在假设我们也有这些已经实现好的奶茶类, 且这个奶茶类仅仅就是一个类, 什么也没有, 不可改动

类似

java 复制代码
class 奶茶{
}

class 原味奶茶 extends 奶茶{
}

但是奶茶也分大杯奶茶, 中杯奶茶, 小杯奶茶, 如果我们要实现这种不同型号的奶茶, 可以设计出原味大杯奶茶, 原味中杯奶茶, 原味小杯奶茶, 牛奶大杯奶茶, 牛奶中杯奶茶...等等足足9个类, 那万一我们奶茶还能加冰加热半糖少糖, 岂不是越来越多类

这时候桥接模式就可以出场了

桥接模式的固定角色有四个:

抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。

扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。

实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。

具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。

如何应用到本例子?

首先抽象化角色:

java 复制代码
class 奶茶{
	protected 型号 x;
	public 奶茶(型号 x){
		this.x = x;
	}
}

扩展抽象化角色:

java 复制代码
class 原味奶茶 extends 奶茶{
	public 原味奶茶(型号 x){
		super(x);
	}
}

实例化角色:

java 复制代码
class 型号{
}

具体实例化角色:

java 复制代码
class 大杯 extends 型号{
}
class 中杯 extends 型号{
}
class 小杯 extends 型号{
}

看到这里, 不知道大家有没有想到一个东西 : 组合

是的, 桥接模式的核心其实就是一个组合的概念

相关推荐
IDOlaoluo43 分钟前
FindBugs-IDEA-1.0.1.zip安装使用教程(IntelliJ IDEA插件手动安装查Bug)
java·bug·intellij-idea
你的人类朋友6 小时前
设计模式的原则有哪些?
前端·后端·设计模式
程序员小凯6 小时前
Spring Boot文件处理与存储详解
java·spring boot·后端
Miraitowa_cheems7 小时前
LeetCode算法日记 - Day 88: 环绕字符串中唯一的子字符串
java·数据结构·算法·leetcode·深度优先·动态规划
黑云压城After8 小时前
vue2实现图片自定义裁剪功能(uniapp)
java·前端·javascript
zcl_19919 小时前
记一次ThreadLocal导致的生产事故
java
RoboWizard9 小时前
怎么判断我的电脑是否支持PCIe 5.0 SSD?Kingston FURY Renegade G5
java·spring·智能手机·电脑·金士顿
毕设源码-钟学长10 小时前
【开题答辩全过程】以 儿童游泳预约系统为例,包含答辩的问题和答案
java·eclipse
皮皮林55110 小时前
5种接口频率监控方案实战对比,性能、成本、复杂度全解析!
java
似水流年 光阴已逝10 小时前
从Jar包到K8s上线:全流程拆解+高可用实战
java·kubernetes·jar