简单工厂模式-计算器控制台程序

来源:互联网 发布:mac怎么用校园网 编辑:程序博客网 时间:2024/06/05 03:41

编写一个简单的计算器程序,包含基本运算。要求面向对象语言。

题目看起来很简单,但由于要求使用面向对象语言,所以要将面向对象语言的三大特性全部体现出来才可以,而不是单单实现其功能。

关键点分析

  1. 对输入做判断
  2. 除数为0时
  3. 面向对象【可扩展,易复用,易维护】
  4. 通过封装,继承,多态降低程序的耦合度

    简单工厂模式

即考虑用一个单独的类来做创造实例的过程。

所需的类

  1. Operation 运算类【定义运算所需的参数以及运算方法】
  2. AddOperation 具体的运算子类【expends Operation】
  3. OperationFactory 运算工厂类【创造具体实例】
  4. Application 相应的应用类【进行相应计算】

如此编写的代码在需要扩充功能或者修改代码时就十分方便了,如果需要增加根号类,则只需新增一个具体的运算类RadicalOperation和修改运算工厂类即可。从而使代码实现了面向对象的特性。

具体代码

1,Operation

public abstract class Operation {    public double number_A;    public double number_B;    public double getNumber_A() {        return number_A;    }    public void setNumber_A(double number_A) {        this.number_A = number_A;    }    public double getNumber_B() {        return number_B;    }    public void setNumber_B(double number_B) {        this.number_B = number_B;    }    public abstract  double getResult();}

2,AddOperation

public class OperationAdd extends Operation{//继承自Operation    @Override    public double getResult() {        // TODO Auto-generated method stub        double result = number_A + number_B;        return result;    }}

3,OperationFactory

/** * 运算工厂类 * @author Administrator * */public class OperationFactory {    public static Operation createOperation(String operation){        Operation ope = null;        switch (operation) {        case "+":            ope = new OperationAdd();            break;        case "/":            ope = new OperationDiv();            break;        default:            break;        }        return ope;    }}

4,Application

public class Application {    public static void main(String args[]){        Operation ope;        ope = OperationFactory.createOperation("/");        ope.number_A = 6;        ope.number_B = 3;        System.out.println(ope.getResult()+"");    }}
3 0