設計模式之策略模式(Strategy Model)

1.使用場景.有個算法有許多版本,使用時用戶決定使用哪一個版本。(比如排序算法,有插入排序,選擇排序,冒泡排序,快速排序,歸併排序等許多排序算法,在使用的時候,用戶決定使用哪一個具體的排序算法)。
        
 2.實現
        1)定義一個接口(interface)
        2)每一個子類實現一個版本。
        

PS:加入每一個版本都有一些相同的部分,那麼可以使用回調函數的方法來做這些相同的部分。

Example Code: 

打印服務,打印接口類PrintInterface提供PrintA,PrintB兩種打印服務,上下文類是PrintContext,用戶可以通過它調用打印服務,具體的代碼清單如下:


public class PrintContext {
    private PrintInterface printInterface;
    
    public PrintContext(PrintInterface pi){
        this.printInterface = pi;
    }
    
    public void run(){
        this.printInterface.print();
    }
    
    public void changeStrategy(PrintInterface pi){
        printInterface = pi;
    }

}


public interface PrintInterface {
    abstract public void print();
}


public class PrintA implements PrintInterface{

    @Override
    public void print() {
        System.out.println("this is printA");
    }

}

public class PrintB implements PrintInterface{

    @Override
    public void print() {
        System.out.println("this is printB");
    }

}


public class maintest {

    public static void main(String[] args) {
        PrintContext pcContext = new PrintContext(new PrintA());
        pcContext.run();
        
        pcContext.changeStrategy(new PrintB());
        pcContext.run();
    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章