Strategy_策略模式
作者:互联网
在策略模式中为一个功能定义了一组算法,将每一个算法封装起来,并让它们可以相互替换,让用户来决定使用哪个算法。
生活中例如洗衣机,它的功能是洗衣服,但是有多个算法:速洗模式,标准模式,强力模式,让用户来决定使用哪种模式来洗衣服。
首先定义一个Pattern接口,所有模式的类都将实现这个接口,并各自重写run()方法的具体实现算法
interface Pattern {
void run();
}
class Fast implements Pattern{
public void run() { System.out.println("速洗模式..."); }
}
class Commonly implements Pattern{
public void run() { System.out.println("一般模式..."); }
}
class Strength implements Pattern{
public void run() { System.out.println("强力模式..."); }
}
我们在定义一个洗衣机类,需要传递一个实现模式接口的类作为参数,然后去调用里面的run()方法。
随着我们传递的模式类不同,它调用的run()方法中的实现算法也不一样。
public class WashingMachine {
public void start(Pattern pattern){
pattern.run();
}
public static void main(String[] args) {
new WashingMachine().start(new Fast());
}
}
这不就是多态吗?
策略模式是一种抽象的编程思想,并不局限于某一特定语言,很多没有多态特性的语言也可以实现策略模式。而多态是Java语言的一种机制,我们可以利用Java的多态机制来实现策略模式。
为什么要使用策略模式?
使用传统的if语句,switch语句那如果洗衣机模式变多以后,就会有很多else..if语句和case语句,如果要增加其他模式,if语句或switch语句也要修改很不方便,可读性低且不易维护。
使用策略模式在添加新模式时,只需要添加一个新的实现pattern接口的类,你传递什么类型的对象,就执行对应的算法,不用再判断这那的。
标签:run,策略,Pattern,void,模式,Strategy,算法,public 来源: https://www.cnblogs.com/linzhikai/p/16507976.html