大话设计模式之简单工厂模式(Java总结)

大话设计模式Java代码自学——简单工厂模式 OperationFactory.java public class OperationFactory { public static void main(String[] args) { Operation oper; oper = OperationFactory.createOperate("*"); oper.setNumA(1); oper.setNumB(2); System.out.println(o 阅读详情

设计模式是一套被反复使用,多人知晓的,经过分类的,代码设计经验的总结。熟练地运用设计模式可以优化你的代码结构,增强代码的稳定性和扩展性。
简单工厂模式是设计模式中比较简单,也比较经常用的一种设计模式。接下来我就用计算器运算的例子来讲解这个模式。


简单工厂模式示例图:


代码示例:


OperationFactory.java(简单工厂类):

package simplefactory;

public class OperationFactory {
    public static Operation createOperate(String operate){
        Operation oper = null;
        switch(operate){
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }
        return oper;
    }
}


Operation.java(运算类):

 

 

package simplefactory;

public abstract class Operation {
    private double _numberA = 0;
    private double _numberB = 0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    public abstract double GetResult() throws Exception;
}

 

 

OperationAdd.java(加法类):

 

package simplefactory;

public class OperationAdd extends Operation {
    @Override
    public double GetResult() {
        double result = 0;
        result = get_numberA() + get_numberB();
        return result;
    }
}

 

 

OperationSub.java(减法类):

 

package simplefactory;

public class OperationSub extends Operation {

    @Override
    public double GetResult() {
        double result = 0;
        result = get_numberA() - get_numberB();
        return result;
    }
}


OperationMul.java(乘法类):

 

 

package simplefactory;

public class OperationMul extends Operation {
    @Override
    public double GetResult() {
        double result = 0;
        result = get_numberA() * get_numberB();
        return result;
    }
}

 

 

OperationDiv.java(除法类):

 

package simplefactory;

public class OperationDiv extends Operation {
    @Override
    public double GetResult() throws Exception {
        double result = 0;
        if(get_numberB() == 0)
            throw new Exception("除数不能为0.");
        result = get_numberA() / get_numberB();
        return result;
    }
}


Main.java

 

 

package simplefactory;

public class Main {

    public static void main(String[] args) throws Exception {
        Operation oper;
        oper = OperationFactory.createOperate("+");
        oper.set_numberA(1);
        oper.set_numberB(2);
        double result = oper.GetResult();
        System.out.println(result);
    }
}

 


简单工厂类中可以根据条件通过运算类实例化多种运算,这样想要更改运算只需在main方法里改动就行了,增加运算的话就加多一个运算类,在工厂类中加多一个分支就行了。

 

 

 

参考资料:大话设计模式 程杰著  清华大学出版社

大话设计模式之简单工厂模式练习Java编写女娲造人 public class MakePerson { public static void main(String[] args) { Person person; person = Nvwa.getPerson(“M”); person.read(); person = Nvwa.getPerson(“W”); person.read(); person = Nvwa.getPerson(“R”)... 阅读详情

相关推荐

在VM虚拟机的MobaXterm下安装JDK17

本文介绍了在Linux系统下安装配置JDK17的完整步骤:1)从Oracle或OpenJDK官网下载Linux版JDK17压缩包;2)上传至/usr/local目录;3)解压安装包;4)通过编辑/etc/profile文件配置环境变量,添加JAVA_HOME和PATH路径;5)使用source命令使配置生效;6)通过javac -version验证安装是否成功。整个过程涵盖了从下载到环境配置的完整流程,确保Java开发环境正确设置。

qq_2937655951的博客 441

《大话设计模式》之简单工厂模式(Java版)

##导火线: “请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。” #菜鸟阶段: public class demo { public static void main(String[] args) { Scanner scanner = new Scanner(System.i...

weixin_39250980的博客 1678

链式中介效应结果解读:从Bootstrap置信区间到实践意义

本文深入解析链式中介效应结果的解读方法,从Bootstrap置信区间的应用到实践意义的阐述。通过实际案例展示如何分析总效应、直接效应和间接效应,并强调效应量评估的重要性。文章还提供了构建逻辑解释的三步法,以及敏感性分析和报告撰写的实用技巧,帮助研究者准确解读链式中介效应。

weixin_33690367的博客 718

mike模型_基于Java的项目的“ Mike”

刚刚启动了基于云的新服务Mike 。 Mike的任务是帮助跨分布式软件团队为基于Java的开发项目提供控制和一致性。 它还旨在允许团队管理其构建环境,同时确保所有开发人员对构建和相关工具都具有相同的看法,即使涉及地理距离也是如此。 Mike利用Amazon EC2托管。 Mike实现了许多安全功能,包括使用基于令牌的身份验证和加密通道来保护源代码。 Mike内部的网络通信使用基于密钥或...

823

别再被SpringerLink虐了!手把手教你搞定LaTeX源文件提交(附正确文件顺序和类型选择)

本文详细解析了SpringerLink投稿系统中LaTeX源文件提交的常见问题与解决方案,包括文件打包、类型选择和顺序排列等关键步骤。通过实战经验,帮助科研人员避开隐形陷阱,一次性完成LaTeX提交,提升投稿效率。特别针对`.bst`和`.cls`文件的正确处理提供了专业指导。

weixin_42522964的博客 441

避坑指南:为什么你的conda环境装不上Mamba?从CUDA到ABI的深度排查

本文深入解析conda环境中安装Mamba架构时常见的CUDA版本冲突、ABI不匹配等问题,提供从基础检查到深度排查的系统化解决方案。针对`causal-conv1d`和`mamba-ssm`安装失败场景,详细讲解PyTorch版本绑定、编译器工具链兼容性等关键技术要点,并给出预编译wheel选择、动态链接库配置等实用修复方案。

weixin_33738555的博客 345

大话设计模式 java_java 之 简单工厂模式(大话设计模式)

以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温故设计模式上面是引用大话设计模式的类图以下是java代码,这里为了简洁只写加减法两个。/*** 运算类接口*/public interfaceIOperation {publicDouble getR...

weixin_39559071的博客 240

CTFmisc-------Jack

每一个文件里面都有不一样的base64编码,我尝试将其解密,发现解出来的是乱码,所以我想到真正的flag藏在这些字符串中,所以我们要写代码把字符串提取出来。提取出来后,得到很多的base64的编码,要一个一个的解码很麻烦,猜到里面有flag字样的base64编码,所以我们将flag进行base64编码,1.下载得到Jack文件夹,里面有很多的txt文件。发现这个字符串是众多编码中唯一一个没有==然后从那些base编码中寻找Zmxh字段。

woshicainiao666的博客 1万+

Java大话设计模式 简单工厂模式

简单工厂模式的概念:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现 。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父...

小鑫lay的博客 264

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4636

硬核干货|C#+EtherCAT协议:高精度多轴伺服运动控制通信实战

本文摘要: 文章聚焦工业自动化领域多轴伺服运动控制的高精度与实时性需求,基于C#与EtherCAT协议实现完整解决方案。EtherCAT凭借微秒级同步、分布式架构等优势成为首选,而C#通过优化GC策略和实时线程可满足工业控制要求。文章从工程落地角度,详细拆解EtherCAT的PDO/SDO通信机制与多轴同步控制逻辑,提供完整的C#代码实现(主站初始化、伺服配置、运动控制等),所有代码均通过汇川/松下伺服实测验证。核心亮点包括:纯C#原生开发、工业现场高频问题解决方案、硬件适配指南,帮助开发者快速掌握高精度多

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 572

java设计模式大话之简单工厂模式

在很早之前,我们的生活资料大都是自己生产,自给自足,效率比较低下,后来工业革命后机械的运用,生产效率大大提高,工厂的产生,大大满足我们的生活所需,我们就用一个工厂的例子来演示简单工厂模式的运用场景以及优缺点吧。假设小张开了一个食品工厂叫好食,主要生产薯片,可乐,和辣条,小王是他的客户,经销商,每次小王来工厂,他不需要关心食品厂内部到底是怎么把一堆堆原材料变成美味可口的食物,只需要跟小张讲他需要哪些货。

vsddvsd的专栏 481

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7208

大话设计模式java版--简单工厂模式

大话设计模式java版--简单工厂模式

健景的博客 1016

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大话设计模式1 简单工厂模式 的java代码实现

首先是Operation抽象类: package yx.designpattern.simpleFactory; abstract class Operation { public double number1; public double number2; public double getNumber1() { return number1; } public void

小菜成长记 1110

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

《大话设计模式》-简单工厂模式(java)

1.面试受挫 题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 1.1小菜的代码 import java.util.Scanner; /** * @author qyq * @create 2021-03-12-13:37 * 请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 */ public class Program { publi

One_Piece111的博客 855

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大话设计模式-Java实现(1)-简单工厂模式

//计算接口 public interface Operation { public double getResult(double _numberA, double _numberB); } //加法运算 public class OperationAdd implements Operation { @Override public double getResult(double...

qq_44458489的博客 237

《大话设计模式》java实现之简单工厂模式

《大话模式》这本书写得不错,可惜不是java版,现在有空,想着用java实现一下,写到哪算哪 UML图 代码结构图 public class Client { public static void main(String[] args) { Operation operation = OperationFactory.createOperation("+");

linlinxie的博客 868

《大话设计模式》简单工厂模式 Java代码

简介 用一个单独的类来做创造实例的过程 简单运算工厂类 示例是一个计算器,我省略了各个计算类的细节。 package 简单工厂; public class OperationFactory { public static Operation createOperate(String operate){ Operation oper=null; switch(operate){ case"+": oper=new

乾坤未定,你我皆是黑马 197

大话设计模式之简单工厂模式(Java版)

大话设计模式——第一章(简单工厂模式)   题目:请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 import java.io.Console; import java.util.Scanner; /** * @author zdy * @create 2018-11-14 22:46 */ public clas...

qq_38345392的博客 236

大话设计模式之简单工厂模式总结-java实现

注:来自《大话设计模式》 如果让我们手写一个计算器程序 可能是下面这样 package designpattern; import java.util.Scanner; public class Program { public static void main(String[] args) { try { System.out.print...

勤劳的搬运工 279

《大话设计模式》Java实现----简单工厂模式

原著《大话设计模式》 程杰 原书使用C++语言,本文通过Java对书中的Demo进行重新实现,,本篇为第一章:简单工厂模式。欢迎交流

L_D_W的博客 513

《大话设计模式》第1章 简单工厂模式(Java语言)

精彩的代码是如何想出来的,要比看到精彩的代码更加令人期待。 ——程杰首先我们给出一段简单的计算器程序代码:import java.util.Scanner;public class Program { public static void main(String[] args) { Scanner scanner=new Scanner(System.in);

zd454909951的博客 762

java 之 简单工厂模式(大话设计模式)

以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温故设计模式 上面是引用大话设计模式的类图以下是java代码,这里为了简洁只写加减法两个。 /** * 运算类接口 */ public interface IOperation {...

weixin_34395205的博客 61

大话设计模式-简单工厂模式(学习笔记与java实现)

java学习了一段时间,对面向对象有一定的理解,但是总觉得理解不深,这几天开始看设计模式,用的是程杰的大话设计模式,但是书里的源码是C#的,自己用java来实现,也加深了java的学习。 1、简单工厂模式的定义 提供一个创建对象实例的功能,不关心它的具体实现。被创建实例的类型可以使接口、抽象类,也可以是具体的类。 2、简单工厂本质 简单工厂模式的本质就是:选择实现。重点在于选

风一样的安姑娘的专栏 871

《大话设计模式》学习笔记(Java实现)——第1章 简单工厂模式

版权声明:本文为博主ExcelMann的原创文章,未经博主允许不得转载。 第1章 简单工厂模式 作者:ExcelMann,转载需注明。

a602389093的博客 293
上一篇: 在linux上安装redis
下一篇: centos7.3安装与配置SVN
Java_Mike
博客等级 码龄10年 34粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值