# Spring实战系列 - 打倒 if else

2020-03-28  本文已影响0人  柳经年

项目开发过程中,有时经常需要根据不同的条件做不同的事情,于是 if else 代码到处都是,本文就来讲讲如何优雅干掉难缠的 if else

先来看看使用 if else 的情况

@Service
public class PayService {

    /**
     * 支付
     *
     * @param orderInfo
     * @param payType
     * @return
     */
    public boolean pay(Object orderInfo, Integer payType) {

        if (payType == 1) {
            System.out.println("微信支付");
        } else if (payType == 2) {
            System.out.println("支付宝支付");
        } else if (payType == 3) {
            System.out.println("信用卡支付");
        }

        return true;
    }
}

下面对上面代码进行改造,如下

public interface PayManager {

    /**
     * 支付处理
     *
     * @param orderInfo
     * @return
     */
    boolean pay(Object orderInfo);
}
// 微信支付逻辑处理类
@Component("payManager1")
public class WeixinPayManager implements PayManager {
    
    @Override
    public boolean pay(Object orderInfo) {
        System.out.println("微信支付");
        return false;
    }
    
}

// 支付宝支付逻辑处理类
@Component("payManager2")
public class AliPayManager implements PayManager {
    
    @Override
    public boolean pay(Object orderInfo) {
        System.out.println("支付宝支付");
        return false;
    }
    
}

// 银行卡支付逻辑处理类
@Component("payManager3")
public class BankCardPayManager implements PayManager {
    
    @Override
    public boolean pay(Object orderInfo) {
        System.out.println("银行卡支付");
        return false;
    }
    
}
@Service
public class PayService {

    @Autowired
    private Map<String, PayManager> payManagerMap;

    /**
     * 支付
     *
     * @param orderInfo
     * @param payType
     * @return
     */
    public boolean pay(Object orderInfo, Integer payType) {

        PayManager payManager = payManagerMap.get("payManager" + payType);

        payManager.pay(orderInfo);

        return true;
    }
}

上一篇 下一篇

猜你喜欢

热点阅读