設計模式(策略模式詳解)Java實現
阿新 • • 發佈:2020-12-26
請下面的程式碼塊:
這是一個父類:
`public class Processor {
public String name(){
//獲取當前類名 返回原始碼中給出的底層類的簡稱
return getClass().getSimpleName();
}
Object process (Object input){
return input;
}
}`
接下來有三個子類繼承父類:
public class Downcase extends Processor {
String process (Object input){
//轉換小寫
return ((String)input) .toLowerCase();
}
}
public class Splitter extends Processor{
String process(Object input){
return Arrays.toString(((String)input).split(" "));
}
}
public class Upcase extends Processor {
String process(Object input) {
//轉換成大寫
return ( (String)input) .toUpperCase();
}
}
main呼叫
public class Apply {
public static void process(Processor p,Object s ){
System.out.println("Using processor"+p.name());
System.out.println(p.process(s));
}
public static String s = "Hello Word" ;
public static void main(String[] args) {
process(new Upcase(),s);
process(new Downcase(),s);
process(new Splitter(),s);
}
}
輸出結果:
Apply.process()方法可以接受任何型別的Processor,·並將其應用到–個Object物件上,然後列印結果。
像本例這樣,建立一個能夠根據所傳遞的引數物件的不同而具有不同行為的方法,被稱為策略設計模式。
這類方法包含所要執行的演算法中固定不變的部分,而“策略”包含變化的部分。策略就是傳遞進去的引數物件,它包含要執行的程式碼。這裡,Processor物件就是一個策略,在main)中可以看到有三種不同型別的策略應用到了String型別的s物件上。