java策略模式解决if else

java策略模式解决if else

情景描述

例如在电商项目中购买商品有三种支付方式,1:支付宝,2:微信,3:余额
前端传递支付类型,服务端通过类型判断调用不同的service.
if(payType1){
//支付宝
}else if(payType
2){
//微信
}else if(payType==3){
//余额
}else{
throw new BusinessException(500, "支付类型错误
}

我们怎么解决上面的if else 判断

//公共的service
interface payService{
int getPayType();

Object payService(Object params);

}

class alizhifuServiceImol implements payService{
int getPayType(){
return 1;
}

Object payService(Object params){
//支付宝
}
}

class wechatServiceImol implements payService{
int getPayType(){
return 2;
}

Object payService(Object params){
//微信
}
}

class balanceServiceImol implements payService{
int getPayType(){
return 3;
}

Object payService(Object params){
//余额
}
}

/**
*controlller 调用的service
*/
class service{

HashMap<Integer,payService> temp=new HashMap<>();
public service(List servcice){
for(payService pays:servcice){
temp.put(pays.getPayType(),pays);
}
}

public Object payServiceByType(Object params){
temp.get(params.getPayType).payService(params);

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值