策略模式的定義很簡單,那就是根據傳入的參數類型而執行不同的行爲的方法。方法包含算法中不變的部分,策略包含變化的部分,實際上策略就是傳入的參數對象。具體看下例子
//定義一個策略接口
public interface Processor {
Object process(Object obj);
}
//實現一個字符串分割的策略
public class SplitStringProcessor implements Processor {
@Override
public String process(Object obj) {
return Arrays.toString(((String) obj).split(" "));
}
}
//實現一個返回字符串的策略
public class StringProcessor implements Processor {
@Override
public String process(Object obj) {
return (String)obj;
}
}
//實現一個字母都爲大寫的策略
public class UpperCaseStringProcessor implements Processor {
@Override
public String process(Object obj) {
return ((String)obj).toUpperCase();
}
}
//執行策略的類
public class Applicator {
public static void apply(Processor p, Object o){
System.out.println(p.process(o));
}
public static void main(String[] args) {
String str = "We are such stuff as dreams are made on";
Applicator.apply(new SplitStringProcessor(),str);
Applicator.apply(new StringProcessor(),str);
Applicator.apply(new UpperCaseStringProcessor(),str);
}
}