Question: How do you achieve the functions of calculator by Object-Oriented ?

Analysis:

1,The function of calculator consists of 4 basic operations:Plus, Substraction, Multify, Division. Generally speaking, we can put the 4 operations into one Java class, but this doesn't accord with the thinking of Object-Oriented in Java. Some reasons I will share with you as following.

Firstly, now we have 4 basic operations, if we need to add some extra operations, you could do nothing but updating the class you have finished, it's not reasonable.If we put the service code mixed with the business logictic layer code, it's not the thinking of Object-Oriented.

What's the Object-Oriented?

Firstly,in java programing, you have to know  the three basic typical characteristics:Encapsulation,Inheritance,Polymorphism.

Encapsulation: we encapsulate the properties of one Object by 'private', in other classes, you can't reach access to this class directly.But if you want to gain access to these properies which you have defined the setter and getter methods, you can call on it by the methods.

Inheritance : This characteristic means that  the subclass can  extend the non-private  properties and non-private methods. You can use the properties or methods directly which are in the superclass, and you can also overwrite the methods in the subclass.

Polymorphism:This characteristic is very important in java programming.Here has  three preconditions about the Polymorphism.

1: relationship between subclass and superclass. This means the subclass must extend the superclass.

2: the superclass must overwrite the functions from the superclass.

3:object reference of superclass must appoint to the object of subclass.

So, by the Inheritance, in this example ,we can define A class of 'Operation',which have two private properties :numberA and numberB,and a public general function of getting result by input parameters of numberA and numberB,this is a superclass.

public class Operation {  

  public double numberA = 0.0;  

  public double numberB = 0.0; 

  public Operation(){     }  

  public Operation(double numberA,double numberB){   

        this.numberA = numberA;  

         this.numberB = numberB;

   } 

  public double getNumberA() {   

         return numberA;

   }

 public void setNumberA(double numberA) {   

         this.numberA = numberA;

  }

 public double getNumberB() {  

         return numberB;

 }

 public void setNumberB(double numberB) {   

        this.numberB = numberB;

 }

 public double getResult() throws Exception{   

  double result = 0.0;     

 return result;

  }

}

Next, you can define some subclasses such as plus, substraction, multify and division and extend to the superclass respectively. Then in every class, you can overwirte the function of  'getResult' and give them specific function.If this class will be used to make the calculation of adding, you can achieve the function in it by using numberA and numberB, make them do the plus.Similarly,you can finish the functions of substraction,multify,division.

Factory? Generally speaking, it's a class to Instantiate the object, according to the principle of Polymorphism, it can instantiate some different objects  which have ths functions of supeerclass. So in this class, we can define a static method with a parameter which stand for the different different operation.

public class Factory {

 public static Operation createOperation(String operator) {   

       Operation oper = null;   

       switch (operator) {   

       case "+":    oper = new Add(); 

       break;   

       case "——":    

       oper = new Subtraction();   

       break;   

       case "*":

       oper = new Mul();   

       break;   

       case "/":   

       oper = new Div();   

       break;  

      }   

   return oper;

  }

}

Speaking of which, the simple factory have been almost built already.

Simple Factory Pattern的更多相关文章

  1. Net设计模式实例之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...

  2. 【设计模式】简单工厂模式 Simple Factory Pattern

    简单工厂模式Simple Factory Pattern[Simple Factory Pattern]是设计模式里最简单的一个模式,又叫静态工厂模式[Static Factory Pattern], ...

  3. Golang设计模式—简单工厂模式(Simple Factory Pattern)

    Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...

  4. 大白话简单工厂模式 (Simple Factory Pattern)

    大白话简单工厂模式 (Simple Factory Pattern) 从买车经历说起 毕业两年,码农张小两口无法忍受挤公交,凌晨起床抢火车票的痛苦,遂计划买车.逛了多家4S店,最终定下日产某车型的轿车 ...

  5. [转]C#设计模式(4)-Simple Factory Pattern

    工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(F ...

  6. 六个创建模式之简单工厂模式(Simple Factory Pattern)

    定义: 定义一个工厂类,它可以根据参数的不同生成对应的类的实例:被创建的类的实例通常有相同的父类.因为该工厂方法尝尝是静态的,所以又被称为静态工厂方法(Static Factory Method) 结 ...

  7. 简单工厂模式(Simple Factory Pattern)

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...

  8. 【java设计模式】【创建模式Creational Pattern】简单工厂模式Simple Factory Pattern(静态工厂方法模式Static Factory Method Pattern)

    public class Test { public static void main(String[] args){ try{ Factory.factory("A").doSt ...

  9. 简单工厂模式(Simple Factory Pattern)

    简单工厂模式概述 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类 在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被 ...

随机推荐

  1. swift中单例类的创建

    1.最经典的 class TheOneAndOnlyKraken {     static let sharedInstance = TheOneAndOnlyKraken()     private ...

  2. (66)Wangdao.com第十一天_JavaScript 数组Array

    数组 Array 本质上,数组属于一种特殊的对象.typeof 运算符会返回数组的类型是 object 数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...) // Object.ke ...

  3. [LeetCode] Custom Sort String 自定义排序的字符串

    S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...

  4. linux locate命令

    1.命令简介         locate(locate) 命令用来查找文件或目录. locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/ml ...

  5. 21 ArcMap 10.6.1 添加Excel格式数据

    注:此次的操作软件为ArcMap10.6.1,在ArcMap其它版本中也可使用,如遇到问题,欢迎交流. 1:Excel中数据(点)标准化(一般是经纬度),将原来的度分秒表示的都要转换成度表示的,如图所 ...

  6. JAVA新的一天

    在2019/03/22/今天里,荣幸成为这个班级的一员,认识了新的小伙伴们,上午由老师大体说了一下java的理念,下午安装了DW编辑器,以及讲解了HTML的基本构造,和标签的使用,即使以前学习过,这次 ...

  7. Hadoop wordcount Demon

    搭建完成Hadoop后,第一个demon,wordcount.此处参考:http://blog.csdn.net/wangjia55/article/details/53160679 wordcoun ...

  8. OO第二次阶段性总结

    前两次作业我都无效了……用了很久时间但还是没能弄明白多线程的写法,以后还是要学会即时的多问问会的同学吧…… 以及我的Mertrics在挣扎很久之后还是用不了……跪了 第七次作业 第七次作业能够完成的原 ...

  9. PAT甲级1103 Integer Factorization【dfs】【剪枝】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805364711604224 题意: 给定一个数n,要求从1~n中找 ...

  10. DocX Xceed.Words.NET操作Word,插入特殊符号

    x 传送门,我们走... DocX的Github传送门 介绍一 介绍二 写入特殊符号 开始... 自己做一个工具,要导出Word的,当时刚开始想使用Xceed.Words.NET.dll第三方插件进行 ...