策略模式定义:定义算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
针对接口编程而非针对实现编程,可把需要实现的算法类型定义为一个接口,如现有接口
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