天天看點

大話設計模式_簡單工廠模式

本文用工廠模式實作 電腦的四則運算

package com.wzs.design;

import java.util.Scanner;

/**
 * 大話設計模式--page10 簡單工廠模式
 * 
 * @author Administrator
 * 
 */
public class SimpleFactory {
	public static void main(String[] args) {
		System.out.println("請輸入數字和操作符:(1-加法,2-減法,3-乘法,4-除法)");

		Scanner input = new Scanner(System.in);
		double numA = input.nextDouble();
		double numB = input.nextDouble();
		int operationNum = input.nextInt();

		Operation operation = OperationFactory.createOperation(operationNum);
		operation.setNumA(numA);
		operation.setNumB(numB);

		System.out.println(operation.getResult());
	}
}

/**
 * 生成操作的簡單工廠
 */
class OperationFactory {
	public static Operation createOperation(int operationNum) {
		Operation operation = null;
		switch (operationNum) {
		case 1:
			operation = new OperationAdd();
			break;
		case 2:
			operation = new OperationSub();
			break;
		case 3:
			operation = new OperationMul();
			break;
		case 4:
			operation = new OperationDiv();
			break;
		default:
			break;
		}
		return operation;
	}
}

/**
 * 操作運算
 */
class Operation {
	public double numA;
	public double numB;

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

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

	public double getResult() {
		double result = 0;
		return result;
	}
}

/**
 * 加 +
 */
class OperationAdd extends Operation {
	@Override
	public double getResult() {
		double result = super.numA + super.numB;
		return result;
	}
}

/**
 * 減 +
 */
class OperationSub extends Operation {
	@Override
	public double getResult() {
		double result = super.numA - super.numB;
		return result;
	}
}

/**
 * 乘 *
 */
class OperationMul extends Operation {
	@Override
	public double getResult() {
		double result = super.numA * super.numB;
		return result;
	}
}

/**
 * 除 /
 */
class OperationDiv extends Operation {
	@Override
	public double getResult() {
		if (super.numB == 0) {
			System.out.println("除數不能為0.");
			System.exit(0);
		}
		double result = super.numA / super.numB;
		return result;
	}
}
           

繼續閱讀