Java设计模式<桥接模式>

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();
    }
}

貌似加密方式暴露到了上册代码中,但是可以通过建造者模式将对象创建出来,项目中往往是多种设计模式的组合

你可能感兴趣的:(Java设计模式<桥接模式>)