策略设计模式
哈喽,兄弟们好。明天咱们来聊一下策略设计模式。
兄弟们有没有写过这样的代码呢?
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();}
咱们来总结一下:策略模式所做的事件就是将咱们须要执行的行为传给函数,而后让函数执行,防止抉择判断的过程。这就是策略设计模式的全部内容了。