策略模式

Posted zoujiejun96

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了策略模式相关的知识,希望对你有一定的参考价值。

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

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

 

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类做出任何的改动。

以上是关于策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Redis实现分布式锁(设计模式应用实战)

用于从 cloudkit 检索单列的代码模式/片段

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式