Simple Factory Pattern
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的更多相关文章
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...
- 【设计模式】简单工厂模式 Simple Factory Pattern
简单工厂模式Simple Factory Pattern[Simple Factory Pattern]是设计模式里最简单的一个模式,又叫静态工厂模式[Static Factory Pattern], ...
- Golang设计模式—简单工厂模式(Simple Factory Pattern)
Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...
- 大白话简单工厂模式 (Simple Factory Pattern)
大白话简单工厂模式 (Simple Factory Pattern) 从买车经历说起 毕业两年,码农张小两口无法忍受挤公交,凌晨起床抢火车票的痛苦,遂计划买车.逛了多家4S店,最终定下日产某车型的轿车 ...
- [转]C#设计模式(4)-Simple Factory Pattern
工厂模式专门负责将大量有共同接口的类实例化.工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类.工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(F ...
- 六个创建模式之简单工厂模式(Simple Factory Pattern)
定义: 定义一个工厂类,它可以根据参数的不同生成对应的类的实例:被创建的类的实例通常有相同的父类.因为该工厂方法尝尝是静态的,所以又被称为静态工厂方法(Static Factory Method) 结 ...
- 简单工厂模式(Simple Factory Pattern)
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
- 【java设计模式】【创建模式Creational Pattern】简单工厂模式Simple Factory Pattern(静态工厂方法模式Static Factory Method Pattern)
public class Test { public static void main(String[] args){ try{ Factory.factory("A").doSt ...
- 简单工厂模式(Simple Factory Pattern)
简单工厂模式概述 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类 在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被 ...
随机推荐
- php实现多进程和关闭进程
一.php实现多进程 PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展. 先代码: <?php$arr = ['30000000 ...
- Java 基础 Java平台的3个版本
Java平台有3个版本:适用于小型设备和智能卡的JavaME(Java Platform Micro Edition,Java微型版).适用于桌面系统的JavaSE(Java Platform Sta ...
- container
容器是轻量级的操作系统级虚拟化,可以让我们在一个资源隔离的进程中运行应用及其依赖项.运行应用程序所必需的组件都将打包成一个镜像并可以复用.执行镜像时,它运行在一个隔离环境中,并且不会共享宿主机的内存. ...
- RHEL5.8安装
创建完成后新的虚拟机.使用光盘启动后,启动界面如下图. 大概介绍下显示界面内容的意思: 1.To install or upgrade in graphical mde, press the ...
- vue_过渡_动画
过渡效果 <style> .xxxx-enter-active, // 显示过渡 .xxxx-leave-active { // 隐藏过渡 transitio ...
- node版本升级参考
https://www.cnblogs.com/sese/p/9557161.html
- jdbc连接oracle时报错 Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableC
错误: Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; ...
- springBoot使用@Value标签读取*.properties文件的中文乱码问题
上次我碰到获取properties文件中的中文出现乱码问题. 查了下资料,原来properties默认的字符编码格式为asci码,所以我们要对字符编码进行转换成UTF-8格式 原先代码:@Proper ...
- Unity进阶----AssetBundle_01(2018/10/30)
AssetBundle作用和定义 1).AssetBundle是一个压缩包包含模型.贴图.预制体.声音.甚至整个场景,可以在游戏运行的时候被加载: 2).AssetBundle自身保存着互相的依赖关系 ...
- pytorch入门与实践-3 Tensor详解
1--如第二章所讲,Tensor的本质是矩阵或数据 2--对Tensor的操作分类 |----API分类 |------torch中定义的: t.f(a,b) |------tensor的成员函数: ...