图片.png定义一些列的算法,把他们一个个封装起来,并且使用他们相互替换。本模式使的算法可以独立于他们的客户而变化。
- Context: 上下文环境
- Strategy:基类或者接口
- ConcreteStrategy: 具体实现的策略类
Context:
strategy:Strategy;
Context(strategy:Strategy):
this.strategy = strategy;
algorithm():
return this.strategy.algorithm(this);
Stragety:
algorithm();
StragetyA:
algorithm(context:Context):
xxxx
Client:
start():
Stragety s = new StragetyA();
Context c = new Context(s);
c.slgorithm();
策略模式相对简单, 结构与State模式类似,但是两者的意图是不一样的。
策略模式进行算法的封装,减少了if else的判断,并且Strategy可以方便扩展。 Context也可以进行扩展,但是结构稳定。
网友评论