java深入浅出设计模式----简单的工厂模式(一)----初学者容易犯的错误(一)

设计模式初次介绍-工厂模式、抽象工厂模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 阅读详情

package aa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import com.sun.xml.internal.txw2.IllegalAnnotationException;

/**
 * 我的QQ : 2622596982
 * 
 * 邮箱: android_lzd@163.com
 * 
 * QQ 交流群 : 277599214
 * 
 * tips : 欢饮各位朋友多多提意见,小弟不胜感激
 * 
 * 
 * 
 */
public class Calculator {
	private static String result;
	private static int res;

	/*
	 * 用户 :输入第一个数
	 * 
	 * 用户:输入计算符号
	 * 
	 * 用户: 输入第二个数
	 * 
	 * 系统:运算出结果
	 */
	public static void main(String[] args) {
		try {
			// 输入第一个数
			System.out.println("请输入第一个数:");
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					System.in));
			String num1 = reader.readLine();

			// 输入运算符
			System.out.println("请输入运算符号:+、-、*、/");
			BufferedReader reader1 = new BufferedReader(new InputStreamReader(
					System.in)); // 频繁的 new该对象
			String symbol = reader1.readLine();

			// 输入第二个数
			System.out.println("请输入第二个数:");
			BufferedReader reader2 = new BufferedReader(new InputStreamReader(
					System.in)); // 频繁的 new该对象
			String num2 = reader2.readLine();

			if ("+" == symbol) { // 错误的使用 “==”
				res = Integer.valueOf(num1) + Integer.valueOf(num2);
				result = String.valueOf(res);
			}

			if ("-" == (symbol)) { // 错误的使用 “==” // 频繁的判断,相当于计算机多了一次无用功
				res = Integer.valueOf(num1) - Integer.valueOf(num2);
				result = String.valueOf(res);
			}

			if ("*" == (symbol)) { // 错误的使用 “==” // 频繁的判断,相当于计算机多了一次无用功
				res = Integer.valueOf(num1) * Integer.valueOf(num2);
				result = String.valueOf(res);
			}

			if ("/" == (symbol)) { // 错误的使用 “==” // 频繁的判断,相当于计算机多了一次无用功
				res = Integer.valueOf(num1) / Integer.valueOf(num2);	// 除数为 0 时怎么办?
				result = String.valueOf(res);
			}

			System.out.println(res); // 结果肯定是 0
			System.out.println(result); // 结果肯定是 null

		} catch (IOException e) {
			new IllegalAnnotationException("出错啦~");
		}
	}
}


优化后:
package aa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import com.sun.xml.internal.txw2.IllegalAnnotationException;

/**
 * 我的QQ : 2622596982
 * 
 * 邮箱: android_lzd@163.com
 * 
 * QQ 交流群 : 277599214
 * 
 * tips : 欢饮各位朋友多多提意见,小弟不胜感激
 * 
 * 
 * 
 */
public class Calculator1 {
	private static String result;
	private static int res;

	/*
	 * 用户 :输入第一个数
	 * 
	 * 用户:输入计算符号
	 * 
	 * 用户: 输入第二个数
	 * 
	 * 系统:运算出结果
	 */
	public static void main(String[] args) {
		BufferedReader reader = null;
		try {
			// 输入第一个数
			System.out.println("请输入第一个数:");
			reader = new BufferedReader(new InputStreamReader(System.in));
			String num1 = reader.readLine();

			// 输入运算符
			System.out.println("请输入运算符号:+、-、*、/");
			String symbol = reader.readLine();

			// 输入第二个数
			System.out.println("请输入第二个数:");
			String num2 = reader.readLine();

			switch (symbol) {
			case "+":
				res = Integer.valueOf(num1) + Integer.valueOf(num2);
				break;
			case "-":
				res = Integer.valueOf(num1) - Integer.valueOf(num2);
				break;
			case "*":
				res = Integer.valueOf(num1) * Integer.valueOf(num2);
				break;
			case "/":
				if (!num2.equals("0")) {
					res = Integer.valueOf(num1) / Integer.valueOf(num2);
				} else {
					System.out.println("除数不能为0");
				}
				break;

			default:
				break;
			}
			// System.out.println(res);
			result = String.valueOf(res);
			System.out.print("计算结果是:");
			if (symbol.equals("/") && num2.equals("0")) {
				System.out.println("请重新计算");
			} else {
				System.out.println(result);
			}
		} catch (IOException e) {
			new IllegalAnnotationException("出错啦~");
		}
	}
}

这样逻辑计算是满足需求了,可是这样的代码还有什么问题吗?


知道的可以提出你们的看法







java.lang.IllegalStateException异常产生的原因及解决办法 问题描述: 错误类型大致为以下几种: java.lang.IllegalStateException:Cannot   forward   a   response   that   is   already   committed  IllegalStateException:response already commited  IllegalStateException:get 阅读详情

相关推荐

深入浅出java设计模式(高清中文PDF)

文件类型为PDF文件,此文档对20多种java设计模式进行了详细讲解,在中文讲解的过程中还附有代码示例给学习者进行参考,使学习者通过实践更容易理解设计模式的原理。 本文档目录: 1.工厂模式 2.单例模式 3.建造模式 4.原型模式 5.适配器模式 6.桥梁模式 7.组合模式 8.装饰模式 9.门面模式 10.享元模式 11.代理模式 12.责任链模式 13.命令模式 14.解释器模式 15.迭代器模式 16.调停者模式 17.备忘录模式 18.观察者模式 19.策略模式 20.状态模式 21.模板模式 22.访问者模式 最后,还附带一个关于“分派”的章节!为了读者对访问者模式有更好的理解。

IllegalArgumentException原因以及解决方案

IllegalArgumentException 是 Java 中的一个标准异常类,通常在方法接收到一个不合法的参数时抛出。

境里婆娑 1万+

10-142 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格

分数 10全屏浏览题目切换布局作者 lhm单位 河北农业大学本题目要求编写SQL语句,查询厂商D生产的PC和便携式电脑的平均价格。

dqd66的博客 2748

JAXBContext.newInstance ERROR 1 counts of IllegalAnnotationException异常解决

JAXBContext.newInstance ERROR 1 counts of IllegalAnnotationException异常解决

zhaozaiqiang的博客 1669

从Frenet坐标系到多项式拟合:Lattice Planner核心原理拆解与调参指南

本文深入解析了自动驾驶轨迹规划中Lattice Planner的核心原理,重点阐述了其在Frenet坐标系下解耦横纵向规划、利用五次和四次多项式拟合轨迹的数学基础。文章提供了从坐标系转换、采样策略到成本函数设计的完整工程实践指南,并分享了关键的参数调优经验,旨在帮助开发者高效实现稳定、平滑且安全的轨迹规划。

tech5的博客 1111

STM32与SD卡SPI接口硬件设计:从原理图到调试的完整指南

SPI(串行外设接口)作为一种广泛应用的同步串行通信协议,以其接线简单、驱动成熟的特点,成为连接微控制器与各类外设的经典方案。其工作原理基于主从架构,通过时钟、数据线和片选信号实现全双工通信,在嵌入式系统中具有极高的技术价值,常用于连接传感器、存储设备和显示模块等。在数据存储场景中,SD卡凭借其大容量和便携性成为首选,而通过SPI模式驱动SD卡,则平衡了性能与设计复杂度。本文聚焦于使用Altium Designer进行硬件设计的工程实践,详细解析了STM32微控制器与SD卡通过SPI通信时,电源管理、上拉电

weixin_34101784的博客 555

记一次异常IllegalAnnotationsException

通过JaxbUtil生成xml文件时报错, IllegalAnnotationsException, 点击这个异常信息,到方法里debug,可以看到具体是哪个注解抛出的异常。当注解很多时,这个方法比较快速能找到问题。

罗格的博客 1088

黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...)

erase命令单位是擦除组,那么一个擦出组包含多个写块,不同写块有不同信息,主机擦除之前,必须进行确定好这些写块中的信息没有用了。所以通常erase用来擦除整个设备或分区。erase完成后,将erase的区域都要么是全0,要么是全1。那么到底是0还是1呢,根据不同的工艺有所不同,但是别担心,在ecsd[181]中会有说明到底是1还是0。erase命令的作用就是简单的将映射地址范围移动到未映射的地址范围。

黑猫奥利奥的博客 7797

java深入浅出设计模式----简单的工厂模式(一)----初学者容易犯的错误(二)

package separate; import sun.org.mozilla.javascript.internal.ast.ContinueStatement; /** * @author issuser * * 运算类 */ public class Operation { /** * 进行计算 * @param num1 第一个数 * @param num2

escdelete的专栏 675

基于 STM32 设计的 HC05 蓝牙音箱

本项目介绍如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。该音箱可以接收来自手机或其他蓝牙设备的音频数据,并通过扬声器播放。该项目展示了如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。易于实现功能实用可扩展性强如果您需要开发一个蓝牙音箱,该项目可以作为参考。

走向CTO的路上... 2471

2026快手爬虫终极指南:JA4+指纹绕过+sign全逆向+AES响应解密(附可运行代码)

快手2026反爬破解实战指南 本文深入剖析快手2026年最新反爬体系,提供完整的破解方案: 四层防御体系:从传输层(JA4+指纹)、应用层(sign参数)、设备层到行为层,90%的爬虫在前两层即被拦截 JA4+指纹绕过:使用curl_cffi模拟Chrome 124的TLS指纹,完美匹配真实浏览器特征 sign参数逆向:通过动态调试提取加密逻辑,Python实现MD5签名算法,包含参数排序和盐值处理 响应解密:破解AES-GCM加密接口数据,完整还原响应内容 技术亮点: 使用curl-impersonate

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1801

【设计模式学习】单例模式和工厂模式

设计模式是在软件设计中反复出现的问题和解决方案的经验总结。它是对软件设计中常见问题的通用解决方案,可以帮助设计人员更高效地解决问题,并提高软件设计的质量和可维护性。设计模式提供了一种在特定情况下的解决方案,它们可以被反复使用,并且是经过验证的最佳实践。设计模式可以帮助开发人员更好地理解软件设计中的问题,并为他们提供一种标准的方法来解决这些问题。通俗易懂的一点来说:就是提高你的下限。

xiaoxie8023的博客 3001

海思3403烧结、复用及mic输入

3403调试的第一步是版本烧结,版本烧结经常遇到问题,本文记录总结遇到的各种问题。

平面到立体 1354

Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)

在软件设计中,工厂模式是一种常见的设计模式,它提供了一种创建对象的最佳方式。通过工厂模式,我们可以将对象的创建逻辑与使用逻辑分离,降低代码的耦合度,提高系统的可扩展性和可维护性。Java作为一种面向对象的编程语言,自然也支持工厂模式的实现。接下来,我们将详细介绍Java中工厂模式的多种实现方式。

码到三十五 6020

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java工厂模式实例(设计模式)

java工厂模式 开篇声明,此理解为作者自身理解,不一定正确,如有错误请大佬们指正。 工厂模式,在作者看来,从现实生活来说,就是一个工厂,里面有N个车间, 每个车间会生产不同的产品,而租户只需要告诉这个工厂的老板我需要一个 什么产品,老板会去找到对应的车间返回给租户使用。 画个图理解: 如果使用java语言来描述则是,对具有相同动作,不同动作执行过程的一 类方法抽象出一个接口类,然后不同的实现类对接口类中的接口进行不同的 实现,并且编写一个工厂类,根据传入获取不同的实现类实例返回给调用者

liu649983697的专栏 9846

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式

今天学习了Java设计模式中的工厂模式,整理了一下老师的笔记;文中的类图(自己懒的画了),可以供大家参考一下类与类之间的关系,希望大家喜欢。

知识记录 2462

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java设计模式——工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种`创建对象`的最佳方式。在工厂模式中,我们在创建对象时`不会对客户端暴露创建逻辑`。工厂模式一般分为三种:`简单工厂模式`、`工厂方法模式`、`抽象工厂模式`。...

怪咖@的博客 3634

设计模式——工厂模式

工厂模式(Factory Pattern)是 Java 设计模式中的一种创建型模式,它提供了一种创建对象的方式,而不需要指定具体的类。工厂模式通过引入工厂类来创建对象,将对象的创建过程从具体的类中分离出来,从而提高了代码的灵活性和可扩展性。三个工厂模式对比如下在使用的时候,应当结合具体情况,选择最为合适的工厂模式进行设计。

AIAIAIXIAO_的博客 1880

Java设计模式之工厂模式详解

1.什么是工厂模式? 工厂模式的主要解决的问题是,将原来分布在各个地方的对象创建过程单独抽离出来,交给工厂类负责创建。其他地方想要使用对象直接找工厂(即调用工厂的方法)获取对象。 2.作用: 实现类创建者和调用者的分离 3.核心本质: 实例化对象不使用new,用工厂方法代替 将选择实现类,创建对象统一管理和控制。从而将调用者和我们的实现类解耦 4.详细分类: 1.简单工厂模式/静态工厂模式 用来生产同一等级结构中的任意产品 2.工厂方法模式 用来生产同一等..

IAMZTDSF的博客 6291

工厂设计模式

1、Spring 是轻量级的开源的 JavaEE 框架 轻量:spring框架所引用的jar包比较少,而且 体积小,而且可以独立使用 开源:免费 2、Spring 可以解决企业应用开发的复杂性 3、Spring 有两个核心部分:IOC 和 Aop (1)IOC:控制反转,把创建对象过程交给 Spring 进行管理 (2)Aop:面向切面,不修改源代码进行功能增强 4、Spring 特点 (1)方便解耦,简化开发 (2)Aop 编程支持 (3)方便程序测试 (4)方便和其他框架进行整合 (5)方便进行事

梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记 3255

Java与设计模式(1):简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的方式,将对象的创建逻辑封装在一个工厂类中,而不是直接在客户端代码中进行实例化。在简单工厂模式中,有三个主要角色:工厂类(Factory Class):负责创建具体对象的工厂类。它通常包含一个静态方法,根据传入的参数或条件,决定创建并返回具体的对象实例。抽象产品类(Abstract Product Class):定义了具体产品类的通用接口或抽象方法。它可以是一个抽象类或接口,用于表示一类具体产品。

暗星涌动 1663

设计模式-简单工厂模式(Simple Factory Pattern)

简单工厂模式 定义 设计一个工厂类,给工厂类传入参数决定创建哪一种产品类的实例。 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。 类型 创建型,但不属于GOF23种设计模式。 适用场景 应用层只需要知道传入工厂类的参数,对于如何创建对象(逻辑)不需要关心。 优点 只需要传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节。 缺点 工厂类的职责相对过重,不易维护,增加新的产品可...

kaven 5132

java设计模式学习笔记之计算器中的简单工厂模式

java设计模式学习笔记之计算器中的简单工厂模式 最近在重温设计模式,偶然看到程杰的《大话设计模式》写的非常不错、通俗易懂,之后的一系列都是学习的笔记,仅此记录。 一、情景回放:某校大二软件工程专业班的《Java程序设计》课上,老师给大伙出了一个题目:用java实现一个简单的计算器功能(用

大力哥的博客 4795

Java 简单工厂模式和工厂模式(类图及实现)

工厂模式概要 理解:用factory模式代替使用new创建对象,实现了创建者和调用者的分离,方便维护对象。 实现方式:是面向接口编程 主要遵循:开闭原则,对类可以扩展,但是不允许对类修改。 这原则核心思想,宁愿多创建几个类,也不要去修改已经写好的类,但如果是系统逻辑的错误,可以修改类。 面向对象设计基本原则: 原则 说明 开闭原则 软件实体应该是可扩展的,而不可修改的 里氏替换原则\color {red}{里氏替换原则}里氏替换原则 子类必须能够替换其基类,保证继承复用的基础

qq_39290990的博客 9806

Java设计模式之二:简单工厂模式详细解析

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它通过一个工厂类来封装对象的创建过程,而不需要将具体的创建逻辑暴露给客户端。简单工厂模式由三个主要角色组成:Product(产品接口):定义产品的通用行为,客户端通过该接口与产品进行交互。ConcreteProduct(具体产品类):实现产品接口,定义具体产品的特定行为。Factory(工厂类):负责创建产品对象的类,它通常是一个静态方法,在方法中根据传入的参数或逻辑决定创建哪个具体产品的实例,并返回给客户端。

Simon学Java 1219
上一篇: android布局采用include 统一管理布局
下一篇: java深入浅出设计模式----简单的工厂模式(一)----初学者容易犯的错误(二)
escdelete
博客等级 码龄14年 37粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值