策略模式是一种封装,将不同的算法用策略模式封装起来。在这个模式中,用到了工厂模式。
例子
interface Algo {
public void calc();
}
class A impletement Algo {
public void calc() {}
}
class B impletement Algo {
public void calc() {}
}
class C impletement Algo {
public void calc() {}
}
class Factory {
static Algo getAlgo(String name) {
if ("A".equal(name)) {
return new A();
} else if ("B".equal(name)) {
return new B();
} else if ("C".equal(name)) {
return new C();
}
return null;
}
class Demo {
public static void main(String[] args) {
Algo algo = Factory.getAlgo("A");
algo.clac();
}
}
从上面可以看到,通过使用策略模式,使得用户代码与具体算法解耦,具体算法可以根据情况扩展。
小结
策略模式是一种解耦代码的方式,通过策略模式,实际上将算法的if else选择集中封装到Factory中,扩展的变化也在Factory中了。
网友评论