天天看点

大话设计模式_简单工厂模式

本文用工厂模式实现 计算器的四则运算

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;
	}
}
           

继续阅读