1. 程式人生 > >Java設計模式之四(經典面試題:工廠模式在開發中的運用)

Java設計模式之四(經典面試題:工廠模式在開發中的運用)

面試題: 
      寫一個簡單的計算器。 

程式碼實現:

抽象一個運算類:

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