java策略模式解决if else
情景描述
例如在电商项目中购买商品有三种支付方式,1:支付宝,2:微信,3:余额
前端传递支付类型,服务端通过类型判断调用不同的service.
if(payType1){
//支付宝
}else if(payType2){
//微信
}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);
}
}