策略设计模式

哈喽,兄弟们好。明天咱们来聊一下策略设计模式。

兄弟们有没有写过这样的代码呢?

if(){    }else if(){    }else if(){    }else if(){    }else if(){    }else{    }

这样的代码往往在业务中的体现是:依据用户不同的身份进行特定的解决,不过随着零碎的不断扩大,会导致代码变得越来越臃肿。所以咱们须要学习以下策略模式来解决这样的问题。

咱们来看一下策略模式做了什么?

策略模式最次要的特点是:将要执行的策略传入,体现在Java中就是传入一个接口的实现类,而后调用这个接口的办法,执行策略

咱们以下面的案例为背景进行解说:假如当初要进行不同语言的打印输出成果

传统办法:if,else判断传入的是什么语言,依据判断后果输入不同的成果

策略模式:传入不同语言要执行的打印代码。比方,如果是Java则传入一个IPrintInteface的实现作为要执行的动作。

咱们代码解释一下:

public class StrategyDesgin {    public static void main(String[] args) {        Java java = new Java();        //将咱们须要做的行为传入        test(java);    }    public static void test(IPrintInterface printInterface){        printInterface.print();    }}class Java implements IPrintInterface{    @Override    public void print() {        System.out.println("Java输入");    }}class C implements IPrintInterface{    @Override    public void print() {        System.out.println("C输入");    }}class JavaScript implements IPrintInterface{    @Override    public void print() {        System.out.println("JavaScript输入");    }}interface IPrintInterface{    void print();}

咱们后面聊过JDK1.8提供的Lambda表达式,它为咱们书写策略模式提供了非常简单的写法,咱们依然以上述的场景为例,看一下代码实现。

public class StrategyDesgin {    public static void main(String[] args) {        test(()-> System.out.println("Java输入"));    }    public static void test(IPrintInterface printInterface){        printInterface.print();    }}interface IPrintInterface{    void print();}

咱们来总结一下:策略模式所做的事件就是将咱们须要执行的行为传给函数,而后让函数执行,防止抉择判断的过程。这就是策略设计模式的全部内容了。