Java工厂设计模式(简单计算器实现)
总体的目录结构如下
1.基础工厂类
public interface BaseFactory {}
2.拓展工厂类
public class OperationFactoryimplements BaseFactory{/*** 工厂类的本质是帮助判断对应的实例,将这种判断放在工厂当中,那么就节省了让操作类自己来进行操作的性能判断,这是使用多态来解决父类和子类之间的差异** @param operation* @return*/public static Operation createOperation(String operation) {Operation oper =null;switch (operation) {case "+":oper =new OperationAddServiceImpl();break;case "-":oper =new OperationSubServiceImpl();break;case "*":oper =new OperationMulServiceimpl();break;case "/":oper =new OperationDivServiceImpl();break;}return oper;}}
3.基础操作类
public class Operation {protected DoublenumberA;protected DoublenumberB;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;}/*** 子类当中复写了当前方法,所以会优先使用子类的方法,这就是一种多态的用法** @return*/public Double getResult() {Double result =0D;return result;}}
4.加法Service
public interface OperationAddService {/*** 两个数相加** @return*/Double getResult();}
5.除法Service
public interface OperationDivService {/*** 两数相除得到的结果** @return*/Double getResult();}
6.乘法Service
public interface OperationMulService {/*** 两个数相乘的结果** @return*/Double getResult();}
7.减法Service
public interface OperationSubService {/*** 两个数的减法** @return*/Double getResult();}
8.加法ServiceImpl
public class OperationAddServiceImplextends Operationimplements OperationAddService {@Overridepublic Double getResult() {Double result =0D;result =numberA +numberB ;return result;}}
9.除法ServiceImpl
public class OperationDivServiceImplextends Operationimplements OperationDivService {@Overridepublic Double getResult() {Double result =0D;if (numberB ==0){throw new LogicalException("除数不能为0");}result =numberA /numberB ;return result;}}
10.减法ServiceImpl
public class OperationSubServiceImplextends Operationimplements OperationSubService {@Overridepublic Double getResult() {Double result =0D;result =numberA -numberB ;return result;}}
11.Controller层
@Controller
public class OperationController {@AutowiredOperationServiceoperationService;@RequestMapping("/index")public String index(){return "login";}@RequestMapping("/calculate")public String operation(Model model, Double numberA , Double numberB , String operation){Operation oper;oper = OperationFactory.createOperation(operation);oper.setNumberA(numberA);oper.setNumberB(numberB);model.addAttribute("result",oper.getResult());return "login";}}
12.使用freemarker来作为前端展示
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>页面</title><body><form action="/calculate" method="post" >numberA:<input type="text" size="30" name="numberA"><br>numberB:<input type="text" size="30" name="numberB"><br><select class="form-control" name="operation" id="state"><option value="+">+</option><option value="-">-</option><option value="*">*</option><option value="/">/</option></select><input type="submit" value="comfirm"><br>结果:<input type="text" value="${(result)!""}" readonly></form></body></html>
Java工厂设计模式(简单计算器实现)相关推荐
- 用java编写一个简单计算器
java 采用java编写一个简单计算器,使用awt和swing 代码如下: import java.awt.Color; import java.awt.Font; import java.awt. ...
- JAVA编写的简单计算器程序
系列文章目录 文章目录 系列文章目录 前言 一.JAVA编写的简单计算器程序 前言 链接:https://pan.baidu.com/s/1oPJRIbwxcXgewZ_KZaWzTg 提取码:egy ...
- Java 工厂设计模式
简介 工厂设计模式在java中有大量的应用,如spring框架,这种类型的设计模式属于创建型模式.在工厂设计模式中,创建逻辑不会对客户端暴露,可以通过一个对外接口创建所需对象. 工厂模式使用场景 需要 ...
- Java工厂设计模式
工厂设计模式 一.面向对象的设计原则 1.1 OCP(开闭原则,Open-Closed Principle) 1.2 DIP(依赖倒转原则,Dependence Inversion Principle ...
- Android工厂设计模式(简单工厂,工厂方法,抽象工厂,BitmapFactory简单工厂分析,Retrofit抽象工厂分析)
文章目录 创建型设计模式(简单工厂,工厂方法,抽象工厂) 一.简单工厂模式 引出简单工厂模式 二.工厂方法模式 三.抽象工厂模式 Android源码中用到的工厂模式举例 一.BitmapFactory ...
- Java Swing写简单计算器以及拓展贷款计算器(等额本息和等额本金计算可以单独拿出来用)
1. 简单计算器 纯手写 package com.jisuanqi;import com.sun.xml.internal.ws.util.StringUtils;import javax.swing ...
- 工厂设计 java,java 工厂设计模式
一.简单工厂模式 简单工厂模式就是创建一个工厂类,对实现同一个接口的类进行实例化.其UML图如下: package com.hs.pattern.factory; public interface S ...
- java工厂设计模式(适合新人)
设计模式最常用的就是单例和工厂模式,单例的话主要是面试中会经常遇到,而工厂实际应用比较多,面试出现的几率也不小,话不多说,开始今天的课程. 1,什么是工厂设计模式 个人理解:工厂设计模式可以理解为一个 ...
- java 设计作业——简单计算器
设计要求: 设计一个计算器,用GUI画出来一个图形界面,有两个输入框,一个输出框,有4个加减乘除按钮,实现简单的加减乘除功能. code: import java.awt.*; import java ...
最新文章
- 科学教师与实验教师工作计算机,计算机实验指导教师工作职责
- MySQL中的Text类型
- 最小覆盖字串—leetcode76
- 机器学习算法机器人足球_购买足球队:一种机器学习方法
- 配置springboot在访问404时自定义返回结果以及统一异常处理
- 邮票的孔怎么做出来的_金银花茶是怎么做出来的呢
- ‘utf-8‘ codec can‘t decode byte 0xb8 in position 0: invalid start byte
- ❤️Spring的静态、动态代理模式
- JSK-135 数字加1【大数】
- 白板推导系列Pytorch-高斯判别分析(GDA)
- 9. 工作区和暂存区
- 新中大银色快车数据恢复
- Android Q共享音频输入
- openpyxl 添加分页符
- python爬取谷歌学术_python爬取谷歌热度
- 手机浏览器哪家强,这3款口碑极佳的浏览器值得一用
- 机房的防火墙有何作用
- postfix反垃圾邮件
- Pandas基础入门(一)
- 攻防世界 —— Crypto新手练习区7题(不仅仅是Morse)题解