苏州北京商场网站建设,网站开发会什么软件,网站备案半身照,之力目录
一、基础概念
二、UML类图
三、角色设计
四、案例分析
1、支付方式
2、支付渠道
五、总结 一、基础概念
桥接模式#xff08;Bridge Pattern#xff09;是一种结构型设计模式#xff0c;其主要目的是“将抽象部分与实现部分分离#xff0c;使它们都可以独立地…目录
一、基础概念
二、UML类图
三、角色设计
四、案例分析
1、支付方式
2、支付渠道
五、总结 一、基础概念
桥接模式Bridge Pattern是一种结构型设计模式其主要目的是“将抽象部分与实现部分分离使它们都可以独立地变化”。
桥接模式的核心思想是把抽象abstraction与实现implementation分离开来从而可以独立变化。
抽象类定义抽象接口包含对实现对象的引用。
实现类提供各种实现方案抽象接口调用实现对象的相关方法完成工作。
这样抽象部分和实现部分就可以通过抽象层建立联系相互独立地变化而不影响对方。
二、UML类图 三、角色设计
角色描述抽象类定义抽象类并包含一个对实现类对象的引用扩展抽象类是抽象化角色的子类实现父类中的业务方法并通过组合关系调用实现化角色中的业务方法实现类接口定义实现类接口,供扩展抽象类调用具体实现类实现类接口的具体实现
四、案例分析
在日常生活中不管用什么渠道进行支付例如支付宝、微信支付和云闪付等它们都提供了三种支付方式分别是密码支付、指纹支付和人脸支付下面就通过代码来实现这个例子让大家更容易去理解这个设计模式。
1、支付方式
定义支付方式的接口
package mode;public interface PayMode {void mode();}密码支付实现类
package mode;public class PwdPayMode implements PayMode {Overridepublic void mode() {System.out.println(密码支付);}
}指纹支付实现类
package mode;public class FingerPayMode implements PayMode{Overridepublic void mode() {System.out.println(指纹支付);}
}人脸支付实现类
package mode;public class FacePayMode implements PayMode {Overridepublic void mode() {System.out.println(人脸支付);}
}2、支付渠道
定义支付渠道的抽象类
package channel;import mode.PayMode;public abstract class PayAbstract {protected PayMode payMode;public PayAbstract(PayMode payMode) {this.payMode payMode;}public abstract void transfer();}
支付渠道抽象类子类-支付宝
package channel;import mode.PayMode;public class ZfbPay extends PayAbstract {public ZfbPay(PayMode payMode) {super(payMode);}Overridepublic void transfer() {System.out.println(支付宝渠道);this.payMode.mode();}}
支付渠道抽象类子类-微信
package channel;import mode.PayMode;public class WxPay extends PayAbstract {public WxPay(PayMode payMode) {super(payMode);}Overridepublic void transfer() {System.out.println(微信渠道);this.payMode.mode();}}
客户端
public class Client{public static void main(String[] args) {PayAbstract wxPay new WxPay(new PwdPayMode());wxPay.transfer();PayAbstract wxPay2 new WxPay(new FingerPayMode());wxPay2.transfer();PayAbstract wxPay3 new WxPay(new FacePayMode());wxPay3.transfer();PayAbstract zfbPay new ZfbPay(new PwdPayMode());zfbPay.transfer();PayAbstract zfbPay2 new ZfbPay(new FingerPayMode());zfbPay2.transfer();PayAbstract zfbPay3 new ZfbPay(new FacePayMode());zfbPay3.transfer();}
}运行结果如下 五、总结
优点
1、抽象和实现分离提高了扩展性符合开闭原则。
2、实现细节对客户透明可以对客户端隐藏变化。
3、符合组合复用原则不使用继承提高复用性。
缺点
1、增加了系统的复杂性。
应用场景
1、一个抽象有多种实现需要动态切换时。
2、系统需要在多个平台上运行时。
3、一个抽象有多个变化维度需要独立扩展。
符合的设计原则
1、单一职责原则Single Responsibility Principle
桥接模式实现了抽象部分和实现部分的分离使它们各自只需要关注一个单一的职责。
2、开闭原则Open Closed Principle
桥接模式使抽象部分和实现部分可以独立扩展开放而不需要修改对方的代码。
3、组合复用原则Composite Reuse Principle
桥接模式充分利用了组合和聚合关系增加系统的复用性。
4、里氏替换原则Liskov Substitution Principle
抽象部分针对接口编程其引用实现类对象可以替换为其子类继续运行。
5、依赖倒转原则Dependency Inversion Principle
抽象部分和实现部分通过接口联系实现了面向接口编程隔离了依赖关系。
总的来说桥接模式通过抽象和实现分离实现解耦让它们可以独立变化从而保持高扩展性。