一句话设计模式8:桥接模式
创始人
2025-05-31 14:06:28

桥接模式:二维矩阵组合解耦设计。


文章目录

  • 桥接模式:二维矩阵组合解耦设计。
  • 前言
  • 一、桥接模式的作用
        • 1 不用桥接模式编码思路
        • 2 采用桥接模式
  • 总结


前言

桥接模式是为了快速实现两个维度之间的变化而设计的兼容模式,这个模式的思想是: 兼顾两种维度的变化,并可以使他们能够快速组合起来;

每个维度的改变,扩展性都非常好


一、桥接模式的作用

旨在解决多维度之间的耦合,使其维度抽象化和实现化之间解耦,并兼具两个维度的变化;

他是针对对象之间的组合,聚合

例如: 我现在有两只颜色的笔,然后要画两种形状出来; 红绿两种笔 圆形和三角形

开始编码:

1 不用桥接模式编码思路

  • 不用桥接模式的话,我们既然要画图形,那么我们可以先选择一种笔,然后选择一个图形画就好了
    伪代码如下:
红笔 红 = new 红笔();
红.draw(new 圆形());
红.draw(new 三角形());当我要用绿色也同样如此
也就是每个笔都需要实现两个方法,去根据两种形状分别画图的方法

问题在于当我加了一种形状后,就要把笔内的方法全部都加一遍,从而兼顾新的形状!!!

2 采用桥接模式

  • 先抽象化
  • 让对象和对象之间的依赖,转为抽象或者接口之间的依赖
    开始编码:
    笔 和 形状抽象
public interface Pen { String draw(Shape shape);
}
======================
public interface Shape {String start(String color);
}

笔的具体实现类

@Service
public class GreenPen implements Pen{@Overridepublic String draw(Shape shape) {return shape.start("绿色");}
}===============================
@Service
public class RedPen implements Pen{@Overridepublic String draw(Shape shape) {return shape.start("红色");}
}

形状的具体实现类

@Service
public class RoundShape implements Shape {@Overridepublic String start(String color) {return color + "的原型";}
}
=========================
@Service
public class TriangleShape implements Shape {@Overridepublic String start(String color) {return color + "的三角形";}
}
  • 开始测试
@SpringBootTest
class ShapeTest {@Autowiredprivate List penList;@Autowiredprivate List shapeList;@Testvoid ss(){for (Pen pen : penList) {for (Shape shape : shapeList) {System.out.println(pen.draw(shape));}}}
}

执行结果
在这里插入图片描述
可以看到,无论笔 或者是 颜色的增加,两个维度无论如何扩展,这种方式都可以很容易的扩展,并且快速组合到你想要的结果

public interface Pen {String draw(Shape shape);
}

笔是抽象的,入参shape 也是抽象的,不再是对象和对象之间的耦合关系,而是转为了抽象之间的关系;
这里无论是引入那种颜色的笔,只需要提供一个符合shape 的图形就够了,再也不用每种图形都要在笔中加一个方法去兼容了;


总结

桥接模式是为了两个维度得到良好的扩展性的一种设计模式,两个维度的具体实现就是 “桥的两端”, 而抽象之间的耦合 就是这座"桥";

相关内容

热门资讯

推荐一款.“[微乐捉鸡麻将]有... 亲,微乐捉鸡麻将这款游戏可以开挂的,确实是有挂的,添加客服微信【4579337】安装软件,很多玩家在...
最新消息“闽游十三水到底有挂吗... 您好:闽游十三水这款游戏可以开挂,确实是有挂的,需要软件加微信【4830828】很多玩家在这款游戏中...
重大通报“超稳大厅炸金花有没有... 您好:超稳大厅炸金花这款游戏可以开挂,确实是有挂的,需要软件加微信【8487422】很多玩家在这款游...
科技通报“休闲久久能开透视挂吗... 您好:休闲久久这款游戏可以开挂,确实是有挂的,需要软件加微信【6262387】,很多玩家在乐酷副厅这...
分享实测“宝宝吃吃吃是不是有挂... 您好:宝宝吃吃吃这款游戏可以开挂,确实是有挂的,需要软件加微信【5951795】,很多玩家在宝宝吃吃...