设计模式学习笔记——策略模式

来源:互联网 发布:市政给排水设计软件 编辑:程序博客网 时间:2024/05/22 10:38

定义:

定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。


通用类图如下:


策略模式的优点:

1、算法可以自由切换

2、避免了使用多重条件判断

3、扩展性良好


策略模式的缺点:

所有策略类都需要对外暴露,上层模块必须知道有哪些策略,然后才能决定使用哪个策略,这与迪米特法则是相违背的,可以混合工厂方法模式、代理模式等解决这个缺点。


通用代码如下:

public interface Strategy {public void doSomething();}
public class ConcreteStrategy1 implements Strategy {@Overridepublic void doSomething() {System.out.println("strategy 1 is used...");}}
public class ConcreteStrategy2 implements Strategy {@Overridepublic void doSomething() {System.out.println("strategy 2 is used...");}}
public class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy=strategy;}public void setStrategy(Strategy strategy) {this.strategy = strategy;}public void doSomething(){this.strategy.doSomething();}}
public class Client {public static void main(String[] args) {Strategy cs1=new ConcreteStrategy1();Context context=new Context(cs1);context.doSomething();Strategy cs2=new ConcreteStrategy2();context.setStrategy(cs2);context.doSomething();}}


原创粉丝点击