设计模式之策略模式(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();
    }

}


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