Java设计模式以虹猫蓝兔的故事讲解桥接模式
目录
什么是桥接模式优点缺点知识点桥接模式实现颜色黄色红色裙子长裙短裙测试总结模式: 桥接模式
案例: 蓝兔宫主买裙子
什么是桥接模式
桥接(Bridge)模式的定义如下: 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
优点
1、抽象与实现分离,扩展能力强
2、符合开闭原则
3、符合合成复用原则
4、其实现细节对客户透明
缺点
由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。
知识点
可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。
桥接模式实现
案例: 蓝兔宫主买裙子
裙子分两个维度,分别是颜色和样式。
颜色有黄色和红色;
样式分长裙和短裙;
抽象化(Abstraction)角色: 颜色
扩展抽象化(Refined Abstraction)角色: 黄色和红色
实现化(Implementor)角色: 样式
具体实现化(Concrete Implementor)角色: 长裙和短裙
颜色
颜色接口,声明一个show()抽象方法
public interface Color {
void show();
}
黄色
黄色类并实现颜色接口
public class ColorYellow implements Color {
@Override
public void show() {
System.out.println("黄色的");
}
}
红色
红色类并实现颜色接口
public class ColorRed implements Color {
@Override
public void show() {
System.out.println("红色的");
}
}
裙子
裙子类,声明一个颜色属性和一个抽象方法
abstract class Qun {
protected Color color;
protected Qun() {
}
protected Qun(Color color) {
this.color = color;
}
public abstract void shows();
}长裙
继承裙子类,并实现抽象方法
public class QunChang extends Qun {
protected QunChang() {
}
protected QunChang(Color color) {
super(color);
}
@Override
public void shows() {
System.out.println("长裙");
color.show();
}
}短裙
继承裙子类,并实现抽象方法
public class QunDuan extends Qun {
protected QunDuan() {
}
protected QunDuan(Color color) {
super(color);
}
@Override
public void shows() {
System.out.println("短裙");
color.show();
}
}测试
new一个红色对象作为参数传给长裙。
public class Demo {
public static void main(String[] args) {
Color color = new ColorRed();
Qun qun = new QunChang(color);
qun.shows();
}
}
总结
当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。
到此这篇关于Java设计模式以虹猫蓝兔的故事讲解桥接模式的文章就介绍到这了,更多相关Java桥接模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?

