Spring中使用策略模式,工厂模式优化代码,避免if-else的冗余

对于设计模式的学习,重要的是学习其思想

个人总结:
策略模式:根据需要获取 “某个子类” 中的方法
Spring中使用策略模式,工厂模式 (工厂中加工所需要的类)+通过策略(根据加工的类找自己想要的方法来处理事情)
+工厂的register 把类通过继承InitializingBean 实现afterPropertiesSet()方法,把需要的类数据全部加载到工厂CorruentHashMap, 根据工厂获取来使用哪个类

注:看不懂可以看下代码实现,更加清晰

代码

public BigDecimal calPrice(BigDecimal orderPrice,User user) {
	String vipType = user.getVipType();
    
	UserPayService strategy = UserPayServiceStrategyFactory.getByUserType(vipType);//此时实现了UserPayService的调	

		用了afterPropertiesSet() ,把数据加载到工厂的Map中 ,然后通过工厂来获取  
	return strategy.quote(orderPrice);

}
@Service
public class ParticularlyVipPayService implements UserPayService,InitializingBean {

    
  @Override
    
  public BigDecimal quote(BigDecimal orderPrice) {
         
    if (消费金额大于30元) {
            
	return 7折价格;
       
    }
    
}

   
  @Override
    //目的加载数据
  public void afterPropertiesSet() throws Exception {
       
   	UserPayServiceStrategyFactory.register("ParticularlyVip",this);
    
   }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值