[2] [单一职责] ( 2 ) 桥模式 bridge
总结
-
一些李建忠的讲解
Bridge模式有时候类似于多继承方案,
但是多继承方案往往违背"单一职责原则(即一个类只有一个变化的原因)",复用性比较差.
Bridge模式是比多继承方案更好的解决方法.
.
当具有多个变化的维度, 随着需求的变化,子类急剧膨胀,
同时充斥着重复代码,这时候的关键是划清责任.
将抽象部分(业务功能)与实现部分(平台实现)分离,
使它们都可以独立地变化.
.
Bridge模式使用"对象间的组合关系",
解耦了 抽象和实现 之间固有的绑定关系,
使得抽象和实现, 可以沿着各自的维度来变化.
所谓抽象和实现沿着各自纬度的变化,即"子类化"它们.
-
关键词
多个变化维度
.
划分责任,进行分离,沿着各自维度发展(子类)
.
组合代替多继承
.
运行时装配代替编译时装配
C++例子
重构前

重构后


这就是桥模式
划分责任, 进行分离(用组合), 沿着各自的发展方向发展(用子类).

角色结构

java例子
参考
https://youtu.be/F19UUeG37VQ?si=uqekWWnCNVqQE1xY
https://github.com/turingplanet/design-patterns-series/blob/main/v16_bridge/java/OnlineStore1.java
重构前
如果出现一个新的需求, 比如要给商品添加新的支付方式, 现金/虚拟货币支付,则需要改动商品的代码.

重构后
新的需求再怎么添加新的商品和新的支付方式, 都不用修改以前的代码

结构


浙公网安备 33010602011771号