设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy) - Java实现

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

一、说明:
1、Calculator 策略(接口);
2、AbstractCalculator 策略辅助函数(抽象类);
3、Plus 加法策略.实现类;
4、Minus 减法策略.实现类。

二、Java实现,代码如下:
1、Calculator

package com.java.designPattern.strategy;

/**
 * 策略 - 接口
 *
 */
public interface Calculator {

    public Integer calculate(String exp);

}

2、AbstractCalculator

package com.java.designPattern.strategy;

/**
 * 策略辅助函数 - 抽象类
 *
 */
public abstract class AbstractCalculator {

    /**
     * 将表达式分解为Integer[
     * @param exp 表达式
     * @param opt 分隔符
     * @return Integer[]
     */
    public Integer[] split(String exp, String opt) {
        String[] array = exp.split(opt);
        Integer[] arrayInt = new Integer[2];
        arrayInt[0] = Integer.parseInt(array[0]);
        arrayInt[1] = Integer.parseInt(array[1]);
        return arrayInt;
    }

}

3、Plus

package com.java.designPattern.strategy;

/**
 * 加法策略 - 实现类
 *
 */
public class Plus extends AbstractCalculator implements Calculator {

    @Override
    public Integer calculate(String exp) {
        Integer[] arrayInt = split(exp, "\\+");
        return arrayInt[0] + arrayInt[1];
    }

}

4、Minus

package com.java.designPattern.strategy;

/**
 * 减法策略 - 实现类
 *
 */
public class Minus extends AbstractCalculator implements Calculator {

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

}

5、Test

package com.java.designPattern.strategy;

/**
 * 测试类
 *
 */
public class Test {

    public static void main(String[] args) {
        Calculator plus = new Plus();
        String plusExp = "1+2";
        Integer plusResult = plus.calculate(plusExp);
        System.out.println(plusExp + " = " + plusResult);

        Calculator minus = new Minus();
        String minusExp = "3-2";
        Integer minusResult = minus.calculate(minusExp);
        System.out.println(minusExp + " = " + minusResult);
    }

}

输出:
1+2 = 3
3-2 = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值