策略模式

策略模式定义:定义算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

针对接口编程而非针对实现编程,可把需要实现的算法类型定义为一个接口,如现有接口

interface Sort(){
    void sort();
}

然后编写它的实现类,如Class QuickSort()、Class ShellSort()等实现类通过不同的方式实现了接口方法。在需要调用该算法的地方把其声明为一个接口,然后用不同的实现类来实例化,如:

Sort sort = new QuickSort();
sort.sort();

从而充分运用多态,加强程序可拓展性;

如某类需要排序算法:

 1 class data{
 2     private Sort sort;
 3 
 4     data(Sort sort){
 5         this.sort = sort;
 6     }
 7 
 8     public void sort(){
 9        sort.sort();
10    }
11 
12    public static void main(Strings[] args){
13        Data data = new Data(new QuickSort());
14        data.sort();
15    }
16 }

运用策略模式可以动态改变行为,如在main中把QuickSort换成ShellSort,可以使Data类运用不同的方法进行排序,但却不用对Data类做出任何的改动。

原文地址:https://www.cnblogs.com/zoujiejun96/p/8778290.html