用最常用的例子,最容易懂得demo讲述策略模式:
策略:只要能完成目的,啥方法都ok;
package Strategy;
/**
*@Description: 策略模式
*@author Potter
*@date 2012-8-28 下午01:46:57
*@version V1.0
*/
public class App {
public static void main(String[] args) {
Calculator calculator=new Calculator();
calculator.setNumber1(20);
calculator.setNumber2(30);
calculator.setOperator(new Minus());
System.out.println("result="+calculator.getResult());
}
}
计算器类:
package Strategy;
/**
*@Description:计算器
*@author Potter
*@date 2012-8-28 下午01:49:59
*@version V1.0
*/
public class Calculator {
private int number1;
private int number2;
private Operator operator;
public void setNumber1(int number1) {
this.number1 = number1;
}
public void setNumber2(int number2) {
this.number2 = number2;
}
public void setOperator(Operator operator) {
this.operator = operator;
}
public int getResult(){
return operator.execute(number1, number2);
}
}
运算接口(策略接口):
package Strategy;
/**
*@Description: 运算接口
*@author Potter
*@date 2012-8-28 下午01:51:41
*@version V1.0
*/
public interface Operator {
public int execute(int number1,int number2);
}
加法类:
package Strategy;
/**
*@Description: 加法类
*@author Potter
*@date 2012-8-28 下午01:55:16
*@version V1.0
*/
public class Plus implements Operator{
@Override
public int execute(int number1, int number2) {
return number1-number2;
}
}
减法类:
package Strategy;
/**
*@Description: 减法类
*@author Potter
*@date 2012-8-28 下午01:57:05
*@version V1.0
*/
public class Minus implements Operator{
@Override
public int execute(int number1, int number2) {
return number1+number2;
}
}