定义:定义一系列的算法,把它们一个个封装起来,并且使他们可相互替换。本模式使得算法可以独立于使用它的客户端而变化。
代码:
package strategy_model;
/**
* @author naivor
* 策略模式-场景类
*/
public class StrategyModel {
public static void main(String[] args) {
Context context=new Context(new Strategy1()); //改变不同的策略,得到不同的处理方式
context.executeStrategy();
}
}
/**
*
* @author naivor
* 策略模式-策略抽象类
*/
abstract class Strategy{
public abstract void operate();
}
/**
*
* @author naivor
* 策略模式-策略1
*/
class Strategy1 extends Strategy{
@Override
public void operate() {
//策略1的业务逻辑
}
}
/**
*
* @author naivor
* 策略模式-策略2
*/
class Strategy2 extends Strategy{
@Override
public void operate() {
//策略2的业务逻辑
}
}
/**
*
* @author naivor
* 策略模式-策略3
*/
class Strategy3 extends Strategy{
@Override
public void operate() {
//策略3的业务逻辑
}
}
/**
*
* @author naivor
* 策略模式-上下文对象类
*/
class Context{
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy=strategy;
}
public void executeStrategy(){
strategy.operate();
}
}