Java设计模式之四(经典面试题:工厂模式在开发中的运用)

原地址:http://www.tuicool.com/articles/ma2I3u

面试题: 
      写一个简单的计算器。 

代码实现:

抽象一个运算类:

package com.qianyan.calcuator;

public abstract class Operation {

	//数字一
	private double num1;
	
	//数字二
	private double num2;

	public double getNum1() {
		return num1;
	}

	public void setNum1(double num1) {
		this.num1 = num1;
	}

	public double getNum2() {
		return num2;
	}

	public void setNum2(double num2) {
		this.num2 = num2;
	}

	public abstract double getResult();
}
创建工厂类:
package com.qianyan.factory;

import com.qianyan.calcuator.AddOperation;
import com.qianyan.calcuator.Operation;
import com.qianyan.calcuator.SubtractOperation;

public class OperationFactory {

	public static Operation getOperation(String oper){
		if("+".equals(oper))
			return new AddOperation();
		else if("-".equals(oper))
			return new SubtractOperation();
		else
			return null;
	}
}
抽象运算的实现类:
package com.qianyan.calcuator;

public class AddOperation extends Operation{

	@Override
	public double getResult() {
		return this.getNum1() + this.getNum2();
	}

}
package com.qianyan.calcuator;

public class SubtractOperation extends Operation{

	@Override
	public double getResult() {
		return this.getNum1() - this.getNum2();
	}

}
用户类:
package com.qianyan.user;

import java.util.Scanner;

import com.qianyan.calcuator.Operation;
import com.qianyan.factory.OperationFactory;

public class User {

	public static void main(String[] args) {
		System.out.println("----小C计算器程序----");
		Scanner input = new Scanner(System.in);
		System.out.println("请输入第一个运算数字:");
		String str1 = input.nextLine();
		System.out.println("请输入运算符:");
		String oper = input.nextLine();
		System.out.println("请输入第二个运算数字:");
		String str2 = input.nextLine();
		
		double num1 = Double.parseDouble(str1);
		double num2 = Double.parseDouble(str2);
		
		Operation opertion = OperationFactory.getOperation(oper);
		opertion.setNum1(num1);
		opertion.setNum2(num2);
		double result = opertion.getResult();

		System.out.println(str1 + oper + str2 + "=" + result);
	}
}
测试结果:
----小C计算器程序----
请输入第一个运算数字:
5
请输入运算符:
-
请输入第二个运算数字:
3
5-3=2.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值