【小威哥の设计模式系列-5】策略模式

363 阅读1分钟

1:概述

小威哥最近因为比较忙,所以好久没有推出新文章了,这期就来给大家讲一下非常简单也非常实用和优雅的策略模式

2:策略模式

直接怼上代码:

 * 这是一个接口
 * 策略模式 :策略模式一般以Strategy结尾,表示我是一个策略模式!

public interface ReceiveMsgStrategy {
    void doMsg(String msg);
}
*  我们来写个实现
public class MsgDoOne implements ReceiveMsgStrategy{
    @Override
    public void doMsg(String msg) {
        System.out.println("do msg one -> msg : " + msg);
    }
}
* 再写个二次封装类
public class ReveiveMsgContext {
    private ReceiveMsgStrategy receiveMsgStrategy;

    private ReveiveMsgContext() {
    }

    public ReveiveMsgContext(ReceiveMsgStrategy receiveMsgStrategy) {
        this.receiveMsgStrategy = receiveMsgStrategy;
    }

    // 这个就是主执行方法
    public void doMsg(String msg) {
        if (null != receiveMsgStrategy) {
            receiveMsgStrategy.doMsg(msg);
        }
    }
}

3:应用场景

其实大家也看出来了吧,策略模式其实就是对一个接口多个实现的二次封装而已,非常简单,但是可以根据自己的偏好啊,业务的需求啊,搞的非常灵活,甚至你可以对它进行三次封装(封装大法好)。

那么其实应用场景也很简单,有些业务可能他的计算判断方法一直在变根据场景或者开关什么的,这个时候我们就可以动态配置这些实现类对应不同的场景。

4:总结

这个模式也太easy了,感觉什么场景都能用,然后再混搭其他设计模式,争取写出让同事无法维护的代码!