您的位置:首页 > 其它

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

2013-03-05 21:51 316 查看
本文用工厂模式实现 计算器的四则运算

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息