總體的目錄結構如下
public interface BaseFactory {}
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;}}
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;}}
public interface OperationAddService {/*** 兩個數相加** @return*/Double getResult();}
public interface OperationDivService {/*** 兩數相除得到的結果** @return*/Double getResult();}
public interface OperationMulService {/*** 兩個數相乘的結果** @return*/Double getResult();}
public interface OperationSubService {/*** 兩個數的減法** @return*/Double getResult();}
public class OperationAddServiceImplextends Operationimplements OperationAddService {@Overridepublic Double getResult() {Double result =0D;result =numberA +numberB ;return result;}}
public class OperationDivServiceImplextends Operationimplements OperationDivService {@Overridepublic Double getResult() {Double result =0D;if (numberB ==0){throw new LogicalException("除數不能為0");}result =numberA /numberB ;return result;}}
public class OperationSubServiceImplextends Operationimplements OperationSubService {@Overridepublic Double getResult() {Double result =0D;result =numberA -numberB ;return result;}}
@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";}}
<!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>
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态