type
status
date
slug
summary
tags
category
icon
password

一、定义

notion image
桥接模式:将一个大类或者一系列相关的类拆分为抽象和实现两个独立的层级结构,从而在开发的时候独立使用
主要作⽤就是通过将抽象部分实现部分分离,把多种可匹配的使⽤进⾏组合。说⽩了核⼼实现也就是在A类中含有B类接口,通过构造函数传递B类的实现,这个B类就是设计的
在⼀些组合中如果有如果每⼀个类都实现不同的服务可能会出现笛卡尔积,⽽使⽤桥接模式就可以⾮常简单。

二、示例:

模拟场景: 1、例如:假如你有一个几何 形状Shape类, 从它能扩展出两个子类: 圆形Cir­cle和 方形Square 。 你希望对这样的类层次结构进行扩展以使其包含颜色, 所以你打算创建名为 红色Red和 蓝色Blue的形状子类。 但是, 由于你已有两个子类,所以总共需要创建四个类才能覆盖所有组合,例如蓝色圆形Blue­Cir­cle和 红色方形Red­Square 。
在层次结构中新增形状和颜色将导致代码复杂程度指数增长。 例如添加三角形状, 你需要新增两个子类, 也就是每种颜色一个; 此后新增一种新颜色需要新增三个子类, 即每种形状一个。 如此以往, 情况会越来越糟糕
notion image
2、例如:随着市场的竞争在⽀付服务⾏业出现了微信和⽀付宝还包括⼀些其他⽀付服务,同时⽀持⼈脸、扫描、密码多种⽅式
模拟⼀个这样的第三⽅平台来承接各个⽀付能⼒,同时使⽤⾃家的⼈脸让⽤户⽀付起来更加容易。那么这⾥就出现了多⽀付与多模式的融合使⽤,如果给
的模式,即使是继承类也需要开发好多。⽽且随着后⾯接⼊了更多的⽀付服务或者⽀付⽅式,就会呈
的扩展
notion image

传统编码方式(关于支付的)

一旦扩充新的支付平台或支付方式,需要多次if else的代码判断,扩充修改代码:PayController
测试:ApiTest

桥接模式(关于支付的)

桥接点,抽象接口,不同的支付方式实现此接口:IPayMode
人脸支付:FacePayMode
指纹支付:FingerPayMode
密码支付:PayCypher
支付平台抽象类,可以传递不同的支付方式的实现类:Pay
微信支付:WeiXinPay
支付宝支付:AliPay
测试:ApiTest

桥接模式(几何形状)

桥接点,抽象接口,不同的颜色实现此接口:Color
红色:RedColor
白色:WhiteColor
抽象类:Shape
长方形:Rectangle
圆形:Circle
测试:ApiTest

UML关系图

notion image
总结: 通过模拟微信与⽀付宝两个⽀付渠道在不同的⽀付模式下,
刷脸 、 指纹 、 密码
,的
组合
从⽽体现了桥接模式的在这类场景中的合理运⽤。简化了代码的开发,给后续的需求迭代增加了很好的扩展性。
从桥接模式的实现形式来看满⾜了单⼀职责和开闭原则,让每⼀部分内容都很清晰易于维护和拓展,但如果我们是实现的⾼内聚的代码,那么就会很复杂。所以在选择᯿构代码的时候,需要考虑好整体的设计,否则选不到合理的设计模式,将会让代码变得难以开发
 
JAVA【设计模式】适配器模式JAVA【设计模式】装饰器模式
IT小舟
IT小舟
微信公众号:IT小舟
公告
type
status
date
slug
summary
tags
category
icon
password
notion image
你好,我是小舟。 欢迎来到我的博客,我喜欢运动、阅读、音乐和写作。如果有什么想要交流的,可以加我微信:upcodezhou。再次感谢你的光临!
notion image