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

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

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

关键点分析

  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()+"");
    }
}

猜你喜欢

转载自blog.csdn.net/kiddingboy_wjj/article/details/50600065
今日推荐