设计模式之简单工厂模式

简单工厂模式的作用:用一个工厂类,来负责创建实例对象

我通过一个简单的模拟计算器的功能来说明简单工厂模式的使用:

创建一个Operation类,这个类作为基类,提供两个变量用来接收我们的输入参数,提供一个用来返回计算结果的方法

public class Operation {
	private Double numA;
	private Double numB;
	
	public Double getNumA() {
		return numA;
	}

	public void setNumA(Double numA) {
		this.numA = numA;
	}

	public Double getNumB() {
		return numB;
	}

	public void setNumB(Double numB) {
		this.numB = numB;
	}

	public  Double getResult(){
		Double result = 0.0;
		return result;
	}
}

创建加、减、乘、除四个基本的计算方法的类,继承Operation类:

	/**
	 * 加法类
	 * @author thinkpad
	 *
	 */
	class OperationAdd extends Operation{
		
		@Override
		public Double getResult() {
			Double result = 0.0;
			result = getNumA()+getNumB();
			return result;
		}
	}
	/**
	 * 减法类
	 * @author thinkpad
	 *
	 */
	class OperationSub extends Operation{
		@Override
		public Double getResult() {
			Double result = 0.0;
			result = getNumA()-getNumB();
			return result;
		}
	}
	/**
	 * 乘法类
	 * @author thinkpad
	 *
	 */
	class OperationMul extends Operation{
		@Override
		public Double getResult() {
			Double result = 0.0;
			result = getNumA()*getNumB();
			return result;
		}
	}
	/**
	 * 除法类
	 * @author thinkpad
	 *
	 */
	class OperationDiv extends Operation{
		@Override
		public Double getResult() {
			Double result = 0.0;
			if(getNumB()==0){
				throw new RuntimeException("除数不能为0");
			}
			result = getNumA()/getNumB();
			return result;
		}
	}
接下来创建工厂类,用来负责创建不同运算的对象:

public class CreateFactory {
	public static Operation createFactory(String operate){
		Operation oper = null;
		
		if(operate.equals("+")){
			oper = new OperationAdd();
		}
		else if(operate.equals("-")){
			oper = new OperationSub();
		}
		else if(operate.equals("*")){
			oper = new OperationMul();
		}
		else if(operate.equals("/")){
			oper = new OperationDiv();
		}
		return oper;
	}
	
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数字A");
		Double numA = input.nextDouble();
		System.out.println("请输入操作");
		String oper = input.next();
		System.out.println("请输入数字B");
		Double numB = input.nextDouble();
		Operation create = new Operation();
		create =CreateFactory.createFactory(oper); //根据我们的操作从工厂类中创建对应的实例对象
		create.setNumA(numA);
		create.setNumB(numB);
		double result = create.getResult();
		System.out.println(numA+" "+oper+""+numB+"="+result);
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值