您的位置:首页 > 其它

设计模式之策略模式(Strategy Model)

2015-02-03 10:26 253 查看
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();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息