java设计模式之策略模式

 策略模式:一系列的算法 将每个算法封装起来 使他们可以相互替换 需要设计一个接口 为这个一系列实现类提供统一的方法 多个实现类实现该接口 设计一个抽象类 提供辅助函数 在使用的过程中可以适配改换算法
interface ICalculator {

   int calcutor(String exp);

}


abstract class AbstractCalculator {

   public int[] spilt(String exp, String opt) {
   	String[] array = exp.split(opt);
   	int[] ints = new int[2];
   	ints[0] = Integer.parseInt(array[0]);
   	ints[1] = Integer.parseInt(array[1]);
   	return ints;
   }

}


class Plus extends AbstractCalculator implements ICalculator {

   @Override
   public int calcutor(String exp) {
   	int[] spilts = spilt(exp, "\\+");
   	return spilts[0] + spilts[1];
   }
}


class Minus extends AbstractCalculator implements ICalculator {


   @Override
   public int calcutor(String exp) {
   	int[] spilts = spilt(exp, "\\-");
   	return spilts[0] - spilts[1];
   }
}

class Multiply extends AbstractCalculator implements ICalculator {


   @Override
   public int calcutor(String exp) {
   	int[] spilts = spilt(exp, "\\*");
   	return spilts[0] * spilts[1];
   }
}

class CalcuteHandler {

   private ICalculator iCalculator;

   public CalcuteHandler(ICalculator iCalculator) {
   	this.iCalculator = iCalculator;
   }

   public ICalculator getiCalculator() {
   	return iCalculator;
   }

   public void setiCalculator(ICalculator iCalculator) {
   	this.iCalculator = iCalculator;
   }

   public int calcutor(String exp) {
   	return iCalculator.calcutor(exp);
   }

}

class Test {

   public static void main(String[] args) {
   	String exp = "10*8";
   	CalcuteHandler calcuteHandler = new CalcuteHandler(new Multiply());
   	int calcutor = calcuteHandler.calcutor(exp);
   	System.out.println(calcutor);

   	exp = "10-8";
   	calcuteHandler.setiCalculator(new Minus());
   	calcutor = calcuteHandler.calcutor(exp);
   	System.out.println(calcutor);
   }

}

输出的结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值