作用:为了防止出现需求变更,导致的大量代码变更,采用策略模式来帮助我们执行类中的方法。
通过创建不同的对象,调用子类(重写父类)的方法
public class Context{
SuperClass sc;
public Context(SuperClass sc){
this.sc = sc;
}
public void mothed(){
sc.test();
}
}
在客户端使用:
public static void main(String[] args){
Context c = new Context(new Class1());
c.method();
}
这样的话只需要修改客户端的条件,即可;
也可以和简单工厂类结合使用,让客户端与SuperClass解耦。
public Context(Object obj){
SuperClass sc;
switch(obj){
case obj1:
sc = new Class1();
case ...
}
}
这样,客户端只需要创建Context的对象,传入一个参数即可。这样的话,虽然要修改Context中的内容,但在对象创建方面就不需要操心了。
简单来说,只要有变更,就不要怕改,但也要尽可能的避免修改,所以,使用怎样的设计模式操作方便,代码改变少,需要一定的功底