策略模式(Strategy)
2015-08-26 09:41 你吃不吃麦芽糖 阅读(212) 评论(0) 收藏 举报策略模式是对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立地类中,从而使得它们可以自由的相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
策略模式是对算法的包装,是把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:准备一组算法,并将每一个算法封装起来,使得它们可以互换。
下面给出一个策略模式最小的实现,首先给出这个实现中涉及到的三个角色:
- 环境(Context)角色:持有一个Strategy类的引用。
- 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或者抽象类实现。此角色给出所有的具体策略类所需要的接口。
- 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
下面是具体的代码:
/**
* 环境角色.
*/
public class Context
{
private Strategy strategy;
/*
* 策略方法
* */
public void contextInterface()
{
this.strategy.strategyInterface();
}
}
/**
* 抽象策略角色
*/
public abstract class Strategy
{
/*
* 策略方法
* **/
public abstract void strategyInterface();
}
/**
* 具体策略角色.
*/
public class ConcreteStrategy extends Strategy
{
@Override
public void strategyInterface() {
}
}
策略模式很容易理解
浙公网安备 33010602011771号