策略实现+工厂 消除if-else

这篇博客探讨了在Java中处理支付逻辑的两种方法:传统的if-else语句和使用策略模式结合工厂方法。通过策略模式,可以更方便地解耦支付方式的实现,便于拓展新的支付类型。博客展示了如何创建支付接口、实现类以及支付工厂,以动态选择不同的支付逻辑。
摘要由CSDN通过智能技术生成

实际场景:根据支付方式不同进入相应的逻辑

使用if-else 方法

/**
 * @Author: xh
 * @Date: 2021/1/28 10:34
 */

public class TestPay {
    public static void main(String[] args) {
        String pay="alipay";
        if("alipay".equals(pay)){
            System.out.println("支付宝支付逻辑..");
        }else if("wechat".equals(pay)){
            System.out.println("微信支付逻辑");
        }
    }
}

策略实现+工厂

优点:实现支付方式的解耦 利于拓展

1.创建interface接口
2.实现类实现该接口
3.创建策略工程,将实现类加入其中(map)
4.完成调用

/**
 * @Author: xh
 * @Date: 2021/1/28 10:29
 */

public interface Pay {

    /**
     * 支付
     * @return 支付凭证
     */
    String pay();
}

/**
 * @Author: xh
 * @Date: 2021/1/28 10:30
 */

public class AlipayImpl implements Pay {
    @Override
    public String pay() {
        System.out.println("阿里支付凭证");
        return "阿里支付凭证";
    }
}
/**
 * @Author: xh
 * @Date: 2021/1/28 10:30
 */

public class WechatPayImpl implements Pay {
    @Override
    public String pay() {
        System.out.println("微信支付凭证");
        return "微信支付凭证";
    }
}
/**
 * @Author: xh
 * @Date: 2021/1/28 10:31
 */

public class PayFactory {
    /**
     * 将支付实现类存入map
     */
    private static final Map<String, Pay> map = new HashMap<>();

    static {
        map.put("alipay",new AlipayImpl());
        map.put("wechat",new WechatPayImpl());
    }

    public static Pay getPay(String payType) {
        return map.get(payType);
    }

}
/**
 * @Author: xh
 * @Date: 2021/1/28 10:34
 */

public class TestPay {
    public static void main(String[] args) {
        pay("alipay");
        pay("wechat");
    }

    private static void pay(String payType) {
        Pay pay = PayFactory.getPay(payType);
        pay.pay();
    }
}

结果:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值