1. 程式人生 > 其它 >設計模式(策略模式詳解)Java實現

設計模式(策略模式詳解)Java實現

技術標籤:java基礎設計模式java

請下面的程式碼塊:
這是一個父類:

`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物件上。