您的位置:首页 > 其它

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

2016-01-28 13:35 351 查看
编写一个简单的计算器程序,包含基本运算。要求面向对象语言。

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

关键点分析

对输入做判断

除数为0时

面向对象【可扩展,易复用,易维护】

通过封装,继承,多态降低程序的耦合度

简单工厂模式

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

所需的类

Operation 运算类【定义运算所需的参数以及运算方法】

AddOperation 具体的运算子类【expends Operation】

OperationFactory 运算工厂类【创造具体实例】

Application 相应的应用类【进行相应计算】

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

具体代码

1,Operation

[code]
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

[code]
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

[code]/**
 * 运算工厂类
 * @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

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