当前位置: 首页 > news >正文

集团网站 备案建设手机网站平台

集团网站 备案,建设手机网站平台,免费动态域名解析软件,分析网站的关键词Go和Java实现简单工厂模式 本文通过计算器案例来说明简单工厂模式的使用#xff0c;使用Go语言和Java语言实现。 1、简单工厂模式 简单工厂模式对对象创建管理方式最为简单#xff0c;只需要创建一个简单的工厂类然后在里面创建对象#xff0c;该模式通过向工 厂传递类型…Go和Java实现简单工厂模式 本文通过计算器案例来说明简单工厂模式的使用使用Go语言和Java语言实现。 1、简单工厂模式 简单工厂模式对对象创建管理方式最为简单只需要创建一个简单的工厂类然后在里面创建对象该模式通过向工 厂传递类型来指定要创建的对象。 由于 Go 本身是没有构造函数的一般而言我们采用 NewName 的方式创建对象/接口当它返回的是接口的时 候其实就是简单工厂模式。 2、Go实现简单计算器 下面实现一个简单的计算器包含简单的加减乘除功能。 package factory// 这里实现一个简单的计算器 // 计算接口,包含计算数的设置和结果的计算 type Operation interface {// 设置进行计算的两个数SetNumberA(float64)SetNumberB(float64)// 计算Calculate() (float64, error) }package factory// 加法 type AddOperation struct {// 包含两个操作数numberA float64numberB float64 }func (addOperation *AddOperation) Calculate() (float64, error) {return addOperation.numberA addOperation.numberB, nil }func (addOperation *AddOperation) SetNumberA(numberA float64) {addOperation.numberA numberA }func (addOperation *AddOperation) SetNumberB(numberB float64) {addOperation.numberB numberB }package factory// 减法 type SubOperation struct {// 包含两个操作数numberA float64numberB float64 }func (subOperation *SubOperation) Calculate() (float64, error) {return subOperation.numberA - subOperation.numberB, nil }func (subOperation *SubOperation) SetNumberA(numberA float64) {subOperation.numberA numberA }func (subOperation *SubOperation) SetNumberB(numberB float64) {subOperation.numberB numberB }package factory// 乘法 type MulOperation struct {// 包含两个操作数numberA float64numberB float64 }func (mulOperation *MulOperation) Calculate() (float64, error) {return mulOperation.numberA * mulOperation.numberB, nil }func (mulOperation *MulOperation) SetNumberA(numberA float64) {mulOperation.numberA numberA }func (mulOperation *MulOperation) SetNumberB(numberB float64) {mulOperation.numberB numberB }package factoryimport errors// 除法 type DivOperation struct {// 包含两个操作数numberA float64numberB float64 }func (divOperation *DivOperation) Calculate() (float64, error) {if divOperation.numberB 0 {return -1, errors.New(被除数不能为0)} else {return divOperation.numberA / divOperation.numberB, nil} }func (divOperation *DivOperation) SetNumberA(numberA float64) {divOperation.numberA numberA }func (divOperation *DivOperation) SetNumberB(numberB float64) {divOperation.numberB numberB }package constantconst (Add Sub -Mul *Div / )package factoryimport proj/constant// 工厂类 type OperationFactory struct { }func (operationFactory *OperationFactory) CreateOperate(operate string) Operation {switch operate {case constant.Add:return AddOperation{}case constant.Sub:return SubOperation{}case constant.Mul:return MulOperation{}case constant.Div:return DivOperation{}}return nil }package mainimport fmt import . proj/factory import proj/constant// 测试 func main() {// 全局变量var numberA float64 200var numberB float64 100var operation Operationvar result float64var err error// 创建工厂operationFactory : OperationFactory{}// 加法operation operationFactory.CreateOperate(constant.Add)operation.SetNumberA(numberA)operation.SetNumberB(numberB)result, err operation.Calculate()if err ! nil {fmt.Println(err)} else {fmt.Println(Add Result:, result)}// 减法operation operationFactory.CreateOperate(constant.Sub)operation.SetNumberA(numberA)operation.SetNumberB(numberB)result, err operation.Calculate()if err ! nil {fmt.Println(err)} else {fmt.Println(Sub Result:, result)}// 乘法operation operationFactory.CreateOperate(constant.Mul)operation.SetNumberA(numberA)operation.SetNumberB(numberB)result, err operation.Calculate()if err ! nil {fmt.Println(err)} else {fmt.Println(Mul Result:, result)}// 除法operation operationFactory.CreateOperate(constant.Div)operation.SetNumberA(numberA)operation.SetNumberB(numberB)result, err operation.Calculate()if err ! nil {fmt.Println(err)} else {fmt.Println(Div Result:, result)} }# 程序输出 Add Result: 300 Sub Result: 100 Mul Result: 20000 Div Result: 23、Java实现简单计算器 package com.factory;// 这里实现一个简单的计算器 // 计算接口,包含计算数的设置和结果的计算 public abstract class Operation {private double numberA;private double 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 abstract double Calculate(); }package com.factory;// 加法 public class AddOperation extends Operation {Overridepublic double Calculate() {return this.getNumberA() this.getNumberB();} }package com.factory;// 减法 public class SubOperation extends Operation {Overridepublic double Calculate() {return this.getNumberA() - this.getNumberB();} }package com.factory;// 乘法 public class MulOperation extends Operation {Overridepublic double Calculate() {return this.getNumberA() * this.getNumberB();} }package com.factory;// 除法 public class DivOperation extends Operation {Overridepublic double Calculate() {if (this.getNumberB() 0) {throw new RuntimeException(被除数不能为0!);} else {return this.getNumberA() / this.getNumberB();}} }package com.factory;public enum OperationType {ADD, SUB, MUL, DIV; }package com.factory;// 工厂类 public class OperationFactory {public Operation CreateOperate(OperationType operate) {switch (operate) {case ADD:return new AddOperation();case SUB:return new SubOperation();case MUL:return new MulOperation();case DIV:return new DivOperation();}return null;} }package com.factory;public class Test {public static void main(String[] args) {// 全局变量Operation operation null;double result 0;// 创建工厂OperationFactory operationFactory new OperationFactory();// 加法operation operationFactory.CreateOperate(OperationType.ADD);operation.setNumberA(200);operation.setNumberB(100);result operation.Calculate();System.out.println(result : result);// 减法operation operationFactory.CreateOperate(OperationType.SUB);operation.setNumberA(200);operation.setNumberB(100);result operation.Calculate();System.out.println(result : result);// 乘法operation operationFactory.CreateOperate(OperationType.MUL);operation.setNumberA(200);operation.setNumberB(100);result operation.Calculate();System.out.println(result : result);// 除法operation operationFactory.CreateOperate(OperationType.DIV);operation.setNumberA(200);operation.setNumberB(100);result operation.Calculate();System.out.println(result : result);} }# 程序输出 result :300.0 result :100.0 result :20000.0 result :2.0
http://www.pierceye.com/news/752544/

相关文章:

  • 网站建设销售求职网络营销推广引流方法
  • 深圳网站建设官网网站背景素材
  • 建设部网站安全考核证书查询平面设计的素材网站
  • 郑州制作个人网站网站个人备案做企业网站
  • 昆明有网站的公司专注网站平台推广公司
  • 网站建设酷隆莲湖免费做网站
  • 网站建设内容保障制度什么网站权威评价搜索引擎优劣
  • 中国建设局网站东莞市路桥收费所
  • 那个网站上有做婚礼布场样图的公司网站排名
  • 凡客资源东莞市seo网络推广服务机构
  • 网站的安全维护wordpress 文章 定时
  • 网上做题扣分在哪个网站上做网站建设微信商城运营
  • 外贸英文商城网站建设微信公众帐号开发
  • 上海做网站运维的公司用手机制作自己的网站
  • 西安做网站朋朋网络花都区建设网站
  • 国外的贸易网站wordpress 不会编程
  • 设计网页作业seo如何优化网站推广
  • 黑龙江建设网官方网站特种作业电脑网站策划书
  • 系统开发和网站开发厦门专业网站营销
  • 网站在线交谈wordpress信息填写
  • 服饰网站建设微网站建设 合同
  • dede网站 远程生成wordpress后台不能登陆
  • word如何做网站链接湖南省绿色建筑信息平台
  • v9网站模板网站建设六道
  • php网站开发原理企业门户网站费用
  • 白银市建设管理处网站定制网站建设和运营
  • 免费音乐网站建设新闻资讯建站服务商
  • 佛山市建设企业网站服务机构普通网站建设计入什么科目
  • 阿里虚拟机建设网站网络科技有限公司营业执照
  • 如何申请建设网站首页培训机构怎么做线上推广