设计模式回顾之四:策略模式(Strategy)

WalkMoreSlowly 2012-11-07

设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。

------------------------------------------------

策略模式:

根据所处的上下文,使用不同的业务规则或算法。

将算法的选择和算法的实现相分离。允许根据上下文进行选择。

让使用算法的类(Context)包含一个抽象类(Strategy),该抽象类有一个抽象方法指定如何调用算法。每个派生类按需要实现算法。

程序实现:

1、算法接口:

public interface Strategy {
	public void algorithm();
}

2、算法实现1:

public class FirstStrategy implements Strategy {

	public void algorithm() {
		System.out.println("THE FIRST STRATEGY!!!");
	}

}

3、算法实现2:

public class SecondStrategy implements Strategy{

	public void algorithm() {
		System.out.println("THE SECOND STRATEGY!!!");
	}

}

4、使用算法的类:

public class Context {//策略使用类
	private Strategy strategy;
	public void setStrategy(Strategy str){//设置策略
		this.strategy=str;
	}
	public void doStrategyWork(){//使用策略
		strategy.algorithm();
	}
}

5、程序入口:

public static void main(String[] args){
        Context c=new Context();//策略使用类
        
        Strategy a1=new FirstStrategy();//实例化策略1
        c.setStrategy(a1);//设置策略1
        c.doStrategyWork();//让策略1工作
        
        Strategy a2=new SecondStrategy();//实例化策略2
        c.setStrategy(a2);//设置策略2
        c.doStrategyWork();//让策略2工作
        
        c.setStrategy(a1);
        c.doStrategyWork();
}

举例:不同的业务场景使用不同的业务规则(如计费、价格等)。

相关推荐