对于设计模式的学习,重要的是学习其思想
个人总结:
策略模式:根据需要获取 “某个子类” 中的方法
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);
}
}