在使用spring开发的时候,有时候会出现一个接口多个实现类的情况,但是有没有有时候有这样一种情况,就是你的逻辑代码里面还不知道你需要使用哪个实现类,就是比如说:你去按摩,按摩店里面有几种会员打折,比如有,vip、svip和普通用户,那按摩店里面是不是需要对这些会员定义好不同的折扣,然后根据每个用户不同的会员计算出不同的消费情况
虽然这样的情况,对于一般人来说,第一眼肯定就是说,直接加 if else 去判断就可以了
这样做,对于实现功能而言,肯定是没问题,如果以后这个按摩店又增加一种会员,那你是不是又要去修改你的逻辑代码去在加一个 if else ,这样就违反了系统架构设计的开闭原则,这样写if else 也使你的代码看起来不优雅。
所以在代码里面,我们可以先定义一个DiscountStrategy接口类
public interface DiscountStrategy {
public String getType();
public double disCount(double fee);
}
然后在写他的几个实现类
普通用户实现类
@Service
public class NormalDisCountService implements DiscountStrategy {
public String getType(){
return "normal";
}
public double disCount(double fee){
return fee * 1;
}
}
会员实现类
pub