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