(转载请注明出处:http://blog.csdn.net/buptgshengod)
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);
}
}
结果