java深入浅出设计模式----简单的工厂模式(一)----业务逻辑分离

【设计模式】通俗易懂的Java设计模式篇! 通俗易懂的Java设计模式篇! 阅读详情

现在可扩展性和可维护性特别强,即便是想要计算多个数,那也很容易了,改动的地方很少。而且还能防止恶意的程序员篡改代码。


如果需要进行两个以上的数字的运算,在该接口中添加方法就行了。

package separatetwo.operate;

public interface Operate {

	public abstract int getResult(int numberOne, int numberTwo);

}


加法
package separatetwo.operate;

public class Add implements Operate {

	private Add() {
	};

	private static Add addInstance = null;

	public static Add getAddInstance() {
		if (addInstance == null) {
			addInstance = new Add();
		}
		return addInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		return numberOne + numberTwo;
	}

}
减法

package separatetwo.operate;

public class Sub implements Operate {

	private Sub() {
	};

	private static Sub subInstance = null;

	public static Sub getSubInstance() {
		if (subInstance == null) {
			subInstance = new Sub();
		}
		return subInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		return numberOne - numberTwo;
	}

}

乘法

package separatetwo.operate;

public class Mul implements Operate {
	private Mul() {
	};

	private static Mul mulInstance = null;

	public static Mul getMulInstance() {
		return mulInstance == null ? new Mul() : mulInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		return numberOne * numberTwo;
	}

}
除法

package separatetwo.operate;

public class Div implements Operate {
	private Div() {
	};

	private static Div divInstance = null;

	public static Div getDivInstance() {
		return divInstance == null ? new Div() : divInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		if(numberTwo != 0){
			return numberOne / numberTwo;
		}
		return Integer.MIN_VALUE;
	}

}


............随便来一个算法都可以实现了。


具体的用法:

package separatetwo;

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

import separatetwo.operate.Div;



public class ShowData {

	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		// 输入第一个数
		System.out.println("请输入第一个数:");
		String num1 = reader.readLine();

		// 输入第二个数
		System.out.println("请输入第二个数:");
		String num2 = reader.readLine();
		
		// 加法
//		int result = Add.getAddInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2));
//		System.out.print("计算结果是:");
//		System.out.println(result);
		
		// 减法
//		System.out.println(Sub.getSubInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2)));
		
		// 乘法
//		System.out.println(Mul.getMulInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2)));
		
		
		// 除法
		int result = Div.getDivInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2));
		if(result == Integer.MIN_VALUE){
			System.out.println("除数为0了");
		}
		System.out.println(result);
		
	}
}



源码下载:点我下载





呕心整理Java中的12种常用设计模式以及应用场景 策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略,可以使得算法可独立于使用它的用户而变化。使用场景:1. 假设现在某超市有三个等级的会员,普通会员,VIP1,VIP2。2. 在结账的时候,三个登记的会员购买了同一种商品,普通会员不打折,VIP1打9折,VIP2打8折。 阅读详情

相关推荐

设计模式对于复杂业务的拆分应用示例

设计模式对于复杂业务的拆分应用示例,代码只是简单的实现一个可用的业务框架,具体根据需求改变,感兴趣的可以相互学习交流;

Java 最常见的 208 道面试题:第九模块答案 设计模式

88. 说一下你熟悉的设计模式? 单例模式 简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。 getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧 publi...

香草天空Sky的博客 377

从零到一:AVL Cruise与Matlab联合仿真DLL配置的避坑指南

本文详细介绍了AVL Cruise与Matlab联合仿真DLL配置的全流程,包括编译器选择、环境变量设置、DLL编译与模型导出等关键步骤。针对常见问题如版本匹配、路径错误等提供了实用解决方案,帮助工程师高效实现控制策略与整车性能仿真的无缝对接。

weixin_29054399的博客 567

Java - 三种基本的设计模式

一、单例模式 1、只创建一个实例对象的设计模式称为单例模式 2、单例模式的优点:可以节省创建对象的时间和对象占用的空间 3、单例模式的对象必须是无状态的 4、无状态的条件:满足任意之一 (1)类本身是没有非静态的成员属性 (2)有非静态的成员属性,但是这些属性是无状态的 二、工厂模式 三、代理模式 1、现有业务层的问题 2、代理的开发 3、静态代理的开发 (1)静态代理类 (3)调用代理类的方法 4、动态代理开发 (1)前置知识:通过反射调用对象的方法 (2)通过proxy类,动态的为现有业务生成代理对象.

XHW0901的博客 1840

Word标题样式基准重置:彻底解决重新打开后自动缩进问题

本文深入剖析了Word文档中标题样式在重新打开后自动缩进问题的根源,并提供了两种根治方案。通过调整标题样式基准或将其设为“无样式”,并配合检查修正多级列表设置,可彻底解决这一常见格式顽疾,确保文档格式的稳定性与专业性。

weixin_29266647的博客 526

【CTF-misc】java盲水印BlindWatermark工具使用

​ 盲水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。 题目来源:NewStarCTF 2023 公开赛道 WEEK2|MISC:Jvav

qq_39972370的博客 6445

Java 24种设计模式

但是对于用户来说,我只是做了一个点击操作,希望得到的结果就是看条新闻啊,你这么多操作,搞这么慢,用户体验很差啊,而且并发量也很低,那不如做成两个小系统,A系统,拉取新闻,推送,并组装一个信息扔给MQ中间件,ok,结束,用户看到新闻。第二,很多中间件设计理念也是基于设计模式的,还有其他的语言,都有自己的设计最佳实践。这边要说两个概念,享元模式对象的属性可以分为两个部分,内部状态和外部状态,内部状态是指不会随环境而改变的值,比如说个人信息,外部状态是指随环境改变的值,不能进行共享的信息,如某大学生选修的课程。

拾一二的博客 3157

LDRA Testbed软件静态分析_常见问题及处理

通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。 到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2585

Java中23种设计模式之静态工厂方法

初步接触设计模式,初步了解静态工厂方法,了解还不全面,我们先一步步了解一下。 一、背景介绍 工厂模式是设计模式的一种,设计模式是自程序开发逐渐就有的,提高开发效率的一种设计思路,先前的开发者们一直在用,只是后来在《Effective Java》中总结了下,就是现在的23种设计模式。 书中共有三个层面的内容: 一、把程序开发过程中在不同系统中多次使用过的成功设计的模式进行总结,用名称-问题-解决...

鄙人kunzhi96,感恩遇见! 1620

CODESYS无扰切换PID(ST源代码)

/运行信号//手自动切换//设置值、目标值yk : REAL;// 实际值、反馈信号;// 开环给定值;// 比例增益;// 积分时间 单位S;Td : REAL;// 微分时间 单位S;//采样时间 单位S// 滤波时间 单位S;//中断周期 默认10msEND_VARVAR_OUTPUT//uk : REAL;//控制器输出;//上一时刻的实际值;uDk : REAL;

RXXW_Dor的博客 1400

基于Blender软件对Matterport3D数据集场景可视化

使用Blender软件对 Matterport3D 中的室内场景进行可视化。

qq_44100524的博客 289

设计模式深度解析:从简单工厂到抽象工厂,彻底搞懂工厂模式家族

工厂方法模式将具体产品的创建延迟到工厂子类中进行。当需要增加一种新产品时,我们只需要:新增一个该产品对应的具体产品类。新增一个该产品对应的具体工厂类。

m0_72755177的博客 1075

数据库系统工程师软考备战:第三篇 - SQL语言深入解析与应用

​​创建表​​​修改表​​​删除表​。

Programming Talk 122

1.工厂模式-简单工厂模式

1.背景 (1)首先理解什么是工厂? 为了方便理解,这里就不用专业词汇描述,个人感觉工厂就是生产各种各样商品的地方。而对于java来说就是new出各种各样的对象。 例如:上面的事例,客户需要一个猫,工厂就得new一个猫对象,需要一个狗,就需要new一个狗对象。 1.1不用工厂代码 ...

程序猿学社的博客 1222

【YOLOv11改进- 主干网络】YOLOv11+WTConv(ECCV2024): 基于YOLOv11的主干网络改进,大感受野的小波卷积

论文提出了WTConv,这是一个使用级联小波分解的层,并执行一组小卷积核的卷积,每个卷积专注于输入的不同频率带,并具有越来越大的感受野。这个过程能够在输入中对低频信息给予更多重视,同时仅增加少量可训练参数。实际上,对于一个  的感受野,可训练参数数量只随着  的增长而呈对数增长。而WTConv与常规方法的参数平方增长形成对比,能够获得有效的卷积神经网络(CNN),其有效感受野(ERF)大小前所未有。

qq_41304809的博客 1401

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

设计模式——工厂模式

基本的业务逻辑的编写并不是难事 基本的业务逻辑的编写并不是难事,作为一个合格的程序员能够编写出易扩展,可维护,高内聚,低耦合的代码才是真正的能力。所以从今天开始会陆陆续续的研究一下设计模式。设计模式并不是针对编程语言,而是考察的编程的思想。 设计模式中最简单的应该就是工厂模式了,在我们企业项目中工厂模式和单例模式也是应用最多的模式了。今天我们就简单的介绍一下工厂模式。都是个人总结,不喜勿喷!...

大鱼的博客 1055

计算机控制技术及应用

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

深入浅出工厂设计模式

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。因为工厂模式就相当于创建实例对象的new,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。工厂模式最直接的作用就是将创建对象和对象的业务逻辑相分离。

方志朋的专栏 3万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深入浅出设计模式【二、工厂方法模式】

工厂方法模式是一种创建型设计模式,它将对象实例化延迟到子类,通过定义创建对象的接口让子类决定具体实例化的类。该模式包含产品、具体产品、创建者和具体创建者四个核心角色,适用于需要解耦、扩展或集中管理对象创建的场景。实现方式包括经典继承、参数化工厂和反射/Lambda表达式等,各有利弊。最佳实践强调依赖抽象、遵循开闭原则和避免过度设计。该模式思想已演变为现代开发中的IoC容器、静态工厂方法等广泛应用,如Spring框架的核心机制。

NeoLshu的博客 1102

深入浅出设计模式-工厂模式(静态工厂模式、工厂方法模式、抽象工厂模式)

工厂模式(静态工厂模式、工厂方法模式、抽象工厂模式) 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离 起来,达到提高灵活性的目的。 工厂模式: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) GOF 在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory...

金陵寄客的博客 461

Java设计模式实战:工厂模式,从“Hello World”到企业级架构的正确打开方式

摘要:工厂模式是Java开发中最常用的创建型设计模式之一,主要包括简单工厂和工厂方法两种实现方式。简单工厂通过静态方法封装对象创建逻辑,适用于产品类型固定的场景;工厂方法通过抽象工厂接口实现扩展性,适合框架开发。现代Java开发中,Spring依赖注入(DI)已成为更优选择,自动处理对象创建和依赖关系。实际开发应避免过度设计,根据场景合理选择:业务开发优先使用简单工厂或Spring DI,框架开发则采用工厂方法。记住口诀:"能注入就注入,不能注入写静态方法,除非你在写框架"。

casually的博客 912

《设计模式》之工厂模式

《设计模式》之工厂模式

向上的"狼"的博客 254

设计模式之 简单工厂模式详解

定义:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 定义中最重要的一句话就是,由一个工厂对象决定创建出哪一...

dhemz20268的专栏 130

设计模式 -- 工厂模式

设计模式 – 工厂模式 OOP(面向对象的七大原则) **开闭原则:**对扩展开放,对修改关闭 **里氏替换原则:**继承必须确保超类所拥有的性质再子类中仍然成立 **依赖倒置原则:**要面向接口编程,不要面向实现编程 **单一职责原则:**要控制类的粒度大小,将对象解耦,提高其内聚性 **接口隔离原则:**要为各个类建立它们需要的专用接口 **迪米特法则:**只与你的直接朋友交谈,不跟陌生人说话 **合成复用原则:**尽量先使用或者聚合等关联关系来实现,其次才考虑使用继承关系来实现 工厂模式介..

weixin_46410481的博客 237

Java的23种设计模式----工厂模式

Java的23种设计模式——工厂模式 工厂模式分为:静态工厂模式,工厂方法模式,抽象工厂模式 通过现实生活中的现象模拟更好理解设计模式 1、现象模拟 话说十年前,有一个暴发户,他家有三辆汽车——Benz 奔驰、Bmw 宝马、Audi 奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上 Benz 车后跟司机说“开奔驰车!”,坐上 Bmw 后他说“开宝马车!”,坐上 Audi

Java晋升指北 1万+

深入浅出设计模式之工厂模式

一、引子 话说十年前,有一个暴发户,他家有三辆汽车---Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机帮他开车。不过暴发户坐车时总是怪怪的:上Benz之后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi后说“开奥迪车!”。你一定会说:这人有病!直接说开车不就行了?! 而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍现象,幸运的是,这种有病的现象在OO(面

小熊的博客 2195

《拉勾Java高薪课程》阶段一输出 之 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式)--菜鸟小回

通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) 一、单例模式 1. 相关概念 单例模式:应用在全局只有一个实例对象时,将自身实例化并赋值给一个属性,加载到此类时直接调用其静态实例。分为懒汉和饿汉式,此处展示饿汉式 实现思路:此类为静态,只暴露getInstance方法,jvm启动过程只加载一次 主要用途:整个项目只要一种配置,基本固定的值,仅实例化一次;如数据库的连接信息 2. 演示思路 假设某地区房产中介只有一个Tom,完全垄断租房中介产业。张三Z和李四L都想在北京租房,只能找Tom。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值