zoukankan      html  css  js  c++  java
  • 策略模式

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

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

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

  • 相关阅读:
    LeetCode 55
    LeetCode 337
    LeetCode 287
    LeetCode 274
    LeetCode 278
    LeetCode 264
    LeetCode 189
    LeetCode 206
    LeetCode 142
    LeetCode 88
  • 原文地址:https://www.cnblogs.com/zoujiejun96/p/8778290.html
Copyright © 2011-2022 走看看