1. 策略设计模式
参考这篇文章: 讲的很清楚,策略设计模式。并且举了一个例子,很具有代表性。
先简单了解一下:
和模板方法模式的区别:
文章里还有一个例子:
备注:我来分解,解释一下这个例子。
将共同的方法定义成了一个接口,在这个接口中并没有这个共同方法的实现。
在Strategy类中,定义了一个方法execute,它的参数是拥有共同方法的接口类。
用户Context在调用Strategy的execute方法时,在定义这个共同的方法。 这样就大大提高了灵活性。因为公共方法也是可以后定义的。而不是在创建类的时候就定义好了。
下面把这个例子敲成代码
package net.mindview.interfaces; //公共方法回调类 interface SameCallback{ void doTheSame(); } //定义了一个策略类 interface Strategy { void execute(SameCallback sc); } //定义策略实现类 class concreteStrategy1 implements Strategy { @Override public void execute(SameCallback sc) { sc.doTheSame(); } } class concreteStrategy2 implements Strategy { @Override public void execute(SameCallback sc) { sc.doTheSame(); } } class concreteStrategy3 implements Strategy { @Override public void execute(SameCallback sc) { sc.doTheSame(); } } public class Context { public static void main(String[] args) { Strategy strategy = new concreteStrategy1(); //这个公共方法类 SameCallback sc = new SameCallback() { @Override public void doTheSame() { System.out.println("do same things"); } }; //那个策略需要用到公共方法类,调用即可,如果不用, 那就不在方法中小勇 strategy.execute(sc); strategy = new concreteStrategy2(); strategy.execute(sc); } }