[Java设计模式]策略模式

2014-11-24 02:53:12 · 作者: · 浏览: 0

1.背景知识

策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式将不同的算法封装起来,根据客户端的需求,调用不同的对象使用不同的算法,节省了大量的if-else之类的代码量。

2.实现

本例由三种算法组成,算法一是将数字乘以1,算法二是乘以2,算法三是乘以3。客户端调用第二种算法。 Calculate.java -三种算法的接口
public interface Calculate {
/*
 * 算法接口,返回具体的算法
 */
	public int calnumber(int number);
	
}

FirstCalculate.java-第一种算法,其余两种算法略
public class FirstCalculate implements Calculate {

	@Override
	public int calnumber(int number) {
		// TODO Auto-generated method stub
		System.out.println(算法一);
		return number;
	}

}

Context.java-设定算法的使用环境
public class Context {
   Calculate cal;
/*
 * 构造函数,设定使用的算法对象
 */
	public Context(Calculate cal){
		this.cal=cal;
	}
/*
 * 将数据传入对应算法
 */
	public int SetNumber(int number){
		return cal.calnumber(number);
	}
}

Client.java-入口函数
public class Client {
	public static void main(String[] args) {  
       
		Calculate cal=new SecondCalculate();
		Context con=new Context(cal);
		int result=con.SetNumber(300);
		System.out.println(result);
    }  	
}

结果 \

3.例子源代码

点击下载源码