【设计模式】策略设计模式| Java Debug 笔记

457 阅读1分钟

策略设计模式

本来觉得设计模式就是奇技淫巧,周末和朋友聊了下,的确很有用,写代码的根基,打算结合实际来看一下各种设计模式。希望能给出宝贵的意见

维基百科的官方解释:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中华民国交个人所得税”就有不同的算税方法。

个人理解:他主要是用来在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