本文用工厂模式实现 计算器的四则运算
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;
}
}