Java设计模式<桥接模式>
意图
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化 简单言之,就是以聚合的方式代替继承.
场景
- 实现系统可能有多个角度分类,每一种角度都可能变化.
场景举例
支付宝支付和微信支付都支持支付功能,在调用的时候都支持MD5签名和RSA签名,如果将两种支付方式封装成统一的接口调用,可以尝试使用该中设计模式,减少类的爆炸增长。
继承方式实现
聚合Demo
上层API
public abstract class PayService {
protected PayEncrypt payEncrypt;
public abstract boolean pay();
}
支付宝支付Alipay
public class Alipay extends PayService {
public Alipay(PayEncrypt payEncrypt) {
super();
super.payEncrypt = payEncrypt;
}
public boolean pay() {
System.out.println("支付宝支付支付");
payEncrypt.sign();
return false;
}
}
微信支付
public class WechatPay extends PayService{
public WechatPay(PayEncrypt payEncrypt) {
super();
super.payEncrypt = payEncrypt;
}
public boolean pay() {
payEncrypt.sign();
return false;
}
}
定义加密签名接口PayEncrypt
public class MD5Encrypt implements PayEncrypt{
public String sign() {
System.out.println("采用MD5签名");
return "采用MD5签名";
}
}
RSAEncrypt实现
public class RSAEncrypt implements PayEncrypt{
public String sign() {
return "采用RSA签名";
}
}
MD5Encrypt
public class MD5Encrypt implements PayEncrypt{
public String sign() {
System.out.println("采用MD5签名");
return "采用MD5签名";
}
}
测试类
public class DemoMain {
public static void main(String[] args) {
PayService payService = new Alipay(new MD5Encrypt());
payService.pay();
}
}
貌似加密方式暴露到了上册代码中,但是可以通过建造者模式将对象创建出来,项目中往往是多种设计模式的组合