策略模式

来源:互联网 发布:小说api接口知乎 编辑:程序博客网 时间:2024/05/22 02:00

策略模式通用类图:
这里写图片描述
优点:
1.扩展性好,只需要实现策略接口就可以;
2.高层模块,算法的切换方便;
缺点:
1.增加策略的时候,策略就得增加一个策略类,类会很多;
2.所有策略类都对外暴露,上层模块知道有哪些策略才能使用。
通用源码:

//策略接口package unit18.Strategy;public interface Strategy {    void doSomething();}//策略的实现package unit18.Strategy;public class ConcreteStrategy1 implements Strategy{    @Override    public void doSomething() {        // TODO Auto-generated method stub        System.out.println("这是一个策略");    }}//封装角色package unit18.Strategy;public class Context {    private Strategy strategy=null;    public Context(Strategy strategy){        this.strategy=strategy;    }    public void doAnything(){        this.strategy.doSomething();    }}//上层模块package unit18.Strategy;public class Client {    public static void main(String[] args) {        // TODO Auto-generated method stub        Strategy strategy=new ConcreteStrategy1();        Context context=new Context(strategy);        context.doAnything();    }}
0 0