定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化;
下面给出策略模式的类图,引自百度百科。
策略模式在LZ第一次接触到的时候,LZ是这么理解的,就是如果我们想往一个方法当中插入随便一段代码的话,就是策略模式。即如下形式。
public class MyClass {
public void myMethod(){
System.out.println("方法里的代码");
//LZ想在这插入一段代码,而且这个代码是可以改变的,想怎么变就怎么变
System.out.println("方法里的代码");
}
}
在JAVA中,接口可以满足LZ的这一过分要求,我们可以设计一个接口,并当做参数传进去,就能达到这个效果了。我们来看,先定义一个接口。
public interface MyInterface {
//我想插入的代码
void insertCode();
}
将原来的类改成这样,传递一个接口进去。
public class MyClass {
public void myMethod(MyInterface myInterface){
System.out.println("方法里的代码");
//你看我是不是插进来一段代码?而且这段代码是可以随便改变的
myInterface.insertCode();
System.out.println("方法里的代码");
}
}
我们只要实现了MyInterface这个接口,在insertCode方法中写入我们想要插进去的代码,再将这个类传递给myMethod方法,就可以将我们随手写的代码插到这个方法当中。比如这样。