java設計一個簡單的計算器程序,Java工廠設計模式(簡單計算器實現)

 2023-12-25 阅读 45 评论 0

摘要:總體的目錄結構如下 1.基礎工廠類 public interface BaseFactory {} 2.拓展工廠類 public class OperationFactoryimplements BaseFactory{/*** 工廠類的本質是幫助判斷對應的實例,將這種判斷放在工廠當中,那么就節省了讓操作類自己來進行操作的性能判斷,這是使用多態來解決父

總體的目錄結構如下
在這里插入圖片描述

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>

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196837.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息