简单运算工厂

来源:互联网 发布:国内做云计算的公司 编辑:程序博客网 时间:2024/05/16 18:56

封装:将加减乘除分别封装为单独的类

继承:加减乘除都继承Operation(运算类)

多态:加减乘除都重写Operation(运算类)的方法

package com.design.utils;import org.junit.Test;public class TestFactory {/* * 运算类 */class Operation {protected double numA;protected double numB;public double getNumA() {return numA;}public void setNumA(double numA) {this.numA = numA;}public double getNumB() {return numB;}public void setNumB(double numB) {this.numB = numB;}public double GetResult(){double res = 0;return res;}}/* * 加 */class OperationAdd extends Operation {public double GetResult(){double res = super.numA + super.numB;return res;}}/* * 减 */class OperationSub extends Operation {public double GetResult(){double res = super.numA - super.numB;return res;}}/* * 乘 */class OperationMul extends Operation {public double GetResult(){double res = super.numA * super.numB;return res;}}/* * 除 */class OperationDiv extends Operation {public double GetResult(){double res = 0;try {res = super.numA / super.numB;} catch (Exception e) {throw e;}return res;}}/* * 简单运算工厂 */class OperationFactory {public Operation createOperation (String operate){Operation oper = null;switch (operate) {case "+":oper = new OperationAdd();break;case "-":oper = new OperationSub();break;case "*":oper = new OperationMul();break;case "/":oper = new OperationDiv();break;}return oper;}}/* * 测试 */@Testpublic void testOperFactory(){OperationFactory opfa = new OperationFactory();Operation oper = opfa.createOperation("+");oper.numA = 2;oper.numB = 3;System.out.println("运算结果为:" + oper.GetResult());}}

 

:此处没有处理精度问题关于精度的问题请看 精度计算

如要查看结合反射机制的简单工厂模式请查看 : http://blog.csdn.net/fateforever/article/details/78401166

原创粉丝点击