美文网首页
简单工厂

简单工厂

作者: swowg | 来源:发表于2016-11-29 14:26 被阅读0次

使用简单工厂实现一个简单的计算器。

一、新建类Operation:

public class Operation {
    private double NumberA = 0;
    private double NumberB = 0;
    public double getResult(){
        double result = 0;
        return result;
    }
    public String getInfo(){
        String info = "";
        return info;
    }
    public double getNumberA() {
        return NumberA;
    }
    public void setNumberA(double numberA) {
        NumberA = numberA;
    }
    public double getNumberB() {
        return NumberB;
    }
    public void setNumberB(double numberB) {
        NumberB = numberB;
    }
}

二、添加算数运算符方法,这里只支持简单的四则运算。
a、加法:

public class OperationAdd extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = super.getNumberA() + super.getNumberB();
        return result;
    }
}

b、减法:

public class OperationSub extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = super.getNumberA() - super.getNumberB();
        return result;
    }
}

c、乘法:

public class OperationMul extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = super.getNumberA() * super.getNumberB();
        return result;
    }
}

d、除法:

public class OperationDiv extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = super.getNumberA() / super.getNumberB();
        return result;
    }
}

三、创建用于判断需要执行那种运算(实例化那个Operation)的简单工厂类:

public class OperationFactory {
    
    public static Operation createOperation(String oper){
        if(oper.equals("+")){
            return new OperationAdd();
        }else if(oper.equals("-")){
            return new OperationSub();
        }else if(oper.equals("*")){
            return new OperationMul();
        }else if(oper.equals("/")){
            return new OperationDiv();
        }else{
            return new OperationInfo();
        }
    }
}

四、创建程序执行的main方法:

public class Calculator {
    public static void main(String[] args) {
        //创建Operation对象,
        Operation oper;
        //使用OperationFactory的createOperation方法创建具体的运算方法,并赋值给oper
        oper = OperationFactory.createOperation("+");
        //使用Operation的set方法为两个参加运算的变量赋值
        oper.setNumberA(1.0);
        oper.setNumberB(2.0);
        //调用oper的getResult方法或的运算结果
        double result = oper.getResult();
        //用于获得超出运算符范围的错误信息
        String getInfo = oper.getInfo();
        //如果错误信息不为空,就打印该信息
        if(!getInfo.equals("")){
            System.out.println(getInfo);
        }else{
            System.out.println(result);
        }
    }
}

分析下这个main方法的执行过程:
1、实例化Operation对象oper,使用OperationFactory的静态方法createOperation(传入字符形式的运算符),此时在OperationFactory类中对比执行相应的else if语句,返回相应的对象。
2、调用Operation的set方法为Operation中的变量赋值。
3、调用相应运算类(这里是OperationAdd)的getResult方法,该方法中使用super.getNumberA、super.getNumberB来获得其父类中的NumberA和NumberB的值进行运算,最后将其运算结果进行打印。
五、小结
您可能会注意到,除了四则运算的四个类外,还有一个OperationInfo,这是为了处理当输入四则运算符以外的字符时给以友好的提示。(不知道这样处理好不好,本人新手还望大神指点一二。)
注:文中涉及的类都同属一个包下例如:package com.sun.chapter01;

相关文章

  • 工厂模式理解

    工厂模式分为简单工厂、工厂模式、抽象工厂三种层级概念。简单工厂不属于23种设计模式,抽象工厂才是。 简单工厂 简单...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 工厂模式

    首先,简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。 A、简...

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

  • 工厂模式

    什么是工厂模式? 工厂模式分为三种:简单工厂工厂方法抽象工厂今天主要介绍的简单工厂:简单工厂(SimpleFact...

  • 设计模式(java)- 单例模式

    之前学习是简单工厂模式、工厂方法模式、抽象工厂模式,复习一下 简单工厂模式 简单工厂模式大概就是创建一个简单工厂类...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 工厂模式——IOS版

    一、前言 工厂模式种类:简单工厂、工厂方法、抽象工厂 IOS中的应用:类簇 二、简单工厂 介绍:简单工厂模式是属于...

  • 相近设计模式比较

    设计模式干货: 简单工厂模式 vs. 工厂模式 vs. 抽象工厂模式简单工厂和工厂模式区别? 简单工厂没有多个子类...

  • 设计模式-工厂模式

    一、工厂模式分类 简单工厂模式 工厂方法模式 抽象工厂模式 二、简单工厂模式 简单工厂就是讲需要new对象的那段代...

网友评论

      本文标题:简单工厂

      本文链接:https://www.haomeiwen.com/subject/symapttx.html