您的位置:首页 > 编程语言 > Java开发

设计模式--策略模式

2016-04-09 00:00 274 查看
摘要: 简单记录策略模式的使用。

策略模式(strategy):

1. 定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。
2. 需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。
3. 决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。

示例:

策略模式测试类StrategyTest.java

/**
* 策略模式测试类
*
* @author Kevin
* @date 2016-3-16
*/
public class StrategyTest {

public static void main(String[] args) {
String exp = "8*8";
Calculator calculator = new MultiplyImpl();
int result = calculator.calculator(exp);
System.out.println("8*8 = " + result);
}

}

计算接口类Calculator.java

/**
* 计算接口
*
* @author Kevin
* @date 2016-3-16
*/
public interface Calculator {

/**
* 计算
*
* @author Kevin
* @param exp
*/
int calculator(String exp);

}

抽象的计算器类AbstractCalculator.java

/**
* 抽象的计算器类
*
* @author Kevin
* @date 2016-3-16
*/
public abstract class AbstractCalculator {

/**
* 处理参数
*
* @author Kevin
* @param exp
* @param opt
*/
public int[] split(String exp, String opt) {
String array[] = exp.split(opt);
int arrayInt[] = new int[2];
arrayInt[0] = Integer.parseInt(array[0]);
arrayInt[1] = Integer.parseInt(array[1]);
return arrayInt;
}

}

减法计算类MinusImpl.java

/**
* 减法计算
*
* @author Kevin
* @date 2016-3-16
*/
public class MinusImpl extends AbstractCalculator implements Calculator {

@Override
public int calculator(String exp) {
int arrayInt[] = split(exp, "-");
return arrayInt[0] - arrayInt[1];
}
}

乘法计算类MultiplyImpl.java

/**
* 乘法计算
*
* @author Kevin
* @date 2016-3-16
*/
public class MultiplyImpl extends AbstractCalculator implements Calculator {

@Override
public int calculator(String exp) {
int arrayInt[] = split(exp, "\\*");
return arrayInt[0] * arrayInt[1];
}
}

加法计算类PlusImpl.java

/**
* 加法计算
*
* @author Kevin
* @date 2016-3-16
*/
public class PlusImpl extends AbstractCalculator implements Calculator {

@Override
public int calculator(String exp) {
int arrayInt[] = split(exp, "\\+");
return arrayInt[0] + arrayInt[1];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息