策略设计模式
本来觉得设计模式就是奇技淫巧,周末和朋友聊了下,的确很有用,写代码的根基,打算结合实际来看一下各种设计模式。希望能给出宝贵的意见
维基百科的官方解释:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中华民国交个人所得税”就有不同的算税方法。
个人理解:他主要是用来在java代码中实现方法的传递,看一下下面js代码,是不是有点神似
function strategy(a,fun){
if(a==1){
fun();
}
}
strategy(1,()=>{
console.log(11111);
})
简单实现
public interface Strategy {
/**
* 我想要某个功能,但是实现方式我有多种,我不管,我只知道输入和输出
* @return
*/
int getSum();
}
public class DayStrategyImpl implements Strategy{
/**
* 做某些处理返回我在此种模式下想要的结果
*/ @Override
public int getSum() {
return 1;
}
}
public class WeekStrategyImpl implements Strategy{
/**
* 做某些处理返回我在此种模式下想要的结果
*/
@Override
public int getSum() {
return 2;
}
}
public class MainFunction {
public int useStratey(Strategy strategy){
return strategy.getSum();
}
}
public class StrategyDemo {
public static void main(String[] args) {
MainFunction mainFunction=new MainFunction();
System.out.println(mainFunction.useStratey(new DayStrategyImpl()));
System.out.println(mainFunction.useStratey(new WeekStrategyImpl()));
System.out.println(mainFunction.useStratey(()->3));
}
}
Mybatis的应用
下面通过mybatis来看看策略设计模式
传统获取mapper方式是通过
sqlSession.getMapper(BlogMapper.class);来获取。(详情请见mybatis官网入门篇),和spring整合的是由就是用Spring管理的SqlSessionTemplate