策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得他们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
一、策略模式的结构
这个模式设计到三个角色:
* 环境(context)角色:持有一个Strategy类的引用。
* 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现,此角色给出所有的具体策略类所需的接口。
* 具体策略(Concrete Strategy)角色:包装了相关的算法或行为。
二、代码
Context:
<code>public
class
Context
{private
Strategy strategy;public
void
contextInterface
()
{ strategy.strategyInterface(); } }/<code>
Strategy:
<code>public
abstract
class
Strategy
{public
abstract
void
strategyInterface
(); }/<code>
ConcreteStrategy:
<code>public
class
ConcreteStrategy
extends
Strategy
{
public
void
strategyInterface
()
{ } }/<code>