实际场景:根据支付方式不同进入相应的逻辑
使用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();
}
}
结果: