水泵网站站群建设,做外贸需要什么网站,做企业网站需要做什么,2022年十大网络流行语发布场景
假设做了个卖课网站#xff0c;会员等级分为月vip、年vip、终生vip#xff0c;每个等级买课的优惠力度不一样#xff0c;传统的写法肯定是一堆的 if-else#xff0c;现在使用策略模式写出代码实现
代码实现
策略模式的核心思想就是对扩展开放#xff0c;对修改关闭…场景
假设做了个卖课网站会员等级分为月vip、年vip、终生vip每个等级买课的优惠力度不一样传统的写法肯定是一堆的 if-else现在使用策略模式写出代码实现
代码实现
策略模式的核心思想就是对扩展开放对修改关闭。
所以需要定义一个接口便于使用多态 如下是年vip代码实现 如下是月vip代码实现
如下是终生vip代码实现 最后在业务层注入bean对象并进行方法调用可以看到这里没有使用Autowired来进行bean的注入而是定义了一个 List 构造方法当Spring IoC实例化这个bean的时候会看构造方法是有参的还是无参的如果有参数会把参数一并初始化如果这个参数是list会把List集合泛型相关的所有接口子类找出来实例化 这样就是利用了策略模式改造如果后续还有其它的什么vip只需要再重新定义一个接口的实现类即可CourseRelationService这里面的逻辑无需修改达到了对扩展开放对修改关闭的目的。