java的工厂模式

【设计模式】基于 Java 语言实现工厂模式 简单⼯⼚模式是⼀种创建型设计模式,但并不属于23种设计模式之⼀,更多的是⼀种编程习惯。将产品的创建过程封装在⼀个⼯⼚类中,把创建对象的流程集中在这个⼯⼚类⾥⾯。简单⼯⼚模式的角色:描述产品的通⽤⾏为,通常由一个 Java 接口或一个 Java 抽象类定义。具体产品:实现抽象产品接⼝或继承抽象产品类。负责创建产品,根据传递的不同参数创建不同的产品示例。 阅读详情

        工厂设计模式

大家先看下面的一个简单列子(此列子引出工厂设计模式)

package lianjeishujuku;

/**

 * 工厂设计模式简单应用

 * 接口简单的应用

 * */

public class start {

public static void main(String[]args) {

//现在要执吃苹果的方法

shuiguo    chi=new Apple();

chi.eat();

}

}

//有一个水果的方法

interface  shuiguo{//注意接口里面的方法都是虚方法   权限是public  默认是abstract  

public  void eat();

}

//下面定义一个苹果类    来继承于接口水果

class  Apple implements shuiguo{

@Override  /***这行代码是java中注解  这个单词是重写的意思    因为一个类实现一个接口要不这个接口里面的所有方法

都要写一遍*(注意:抽象类实现接口对于接口里面的方法抽象类可以实现也可以不实现)*/

public void eat() {

System.out.println("吃苹果........");

}

}

以上代码是没有任何语法错误,但是这个代码存在一个设计问题,什么设计问题呢?假如现在有这么一个需求,比如在增加一个水果类,

 package lianjeishujuku;

/**

 * 工厂设计模式简单应用

 * 接口简单的应用

 * */

public class start {

public static void main(String[]args) {

//现在要执吃苹果的方法

shuiguo    chi=new banana();//这个位置和上面那个代码不一样 这个是香蕉的 ,上面是苹果的

chi.eat();

}

}

//有一个水果的方法

interface  shuiguo{//注意接口里面的方法都是虚方法   权限是public  默认是abstract  

public  void eat();

}

//下面定义一个苹果类    来继承于接口水果

class  Apple implements shuiguo{

 

@Override  /***这行代码是java中注解  这个单词是重写的意思    因为一个类实现一个接口要不这个接口里面的所有方法

都要写一遍*(注意:抽象类实现接口对于接口里面的方法抽象类可以实现也可以不实现)*/

public void eat() {

System.out.println("吃苹果了........");

}

 

}

//现在增加一个吃香蕉的类

class banana implements shuiguo{

@Override

public void eat() {

System.out.println("吃香蕉了........");

}

 

}

从以上面代码中可以看出  增加一个水果类就要改变主函数里面的   这样是影响客户端的 ,有什么办法既能增加水果类由不用改变客户端的影响呢????看下面代码。

利用工厂设计模式

package lianjeishujuku;

/**

 * 工厂设计模式简单应用

 * 接口简单的应用

 * */

public class start {

public static void main(String[]args) {

//现在要执吃苹果的方法

shuiguo  f=hello.name(args[0]);//初始化参数

if (f!=null) {

f.eat();

}

}

}

//有一个水果的方法

interface  shuiguo{//注意接口里面的方法都是虚方法   权限是public  默认是abstract  

public  void eat();

}

//下面定义一个苹果类    来继承于接口水果

class  Apple implements shuiguo{

@Override  /***这行代码是java中注解  这个单词是重写的意思    因为一个类实现一个接口要不这个接口里面的所有方法

都要写一遍*(注意:抽象类实现接口对于接口里面的方法抽象类可以实现也可以不实现)*/

public void eat() {

System.out.println("吃苹果了........");

}

 

}

//现在增加一个吃香蕉的类

class banana implements shuiguo{

@Override

public void eat() {

System.out.println("吃香蕉了........");

}

}

class   hello{

public static shuiguo name(Stringclassname) {//直接去的接口实例

if ("apple".equals(classname)) {

return new Apple();

}else if("banana".equals(classname))

{

return new  banana();

}else {//如果都没有返回空

return null;

}

}

}


JAVA编程【设计模式之工厂模式】 工厂模式(Factory Pattern)是一种创建对象的设计模式,它通过隐藏实例化逻辑,使代码更加松耦合、易维护。工厂模式属于创建型设计模式,主要用于解耦对象的创建过程。 阅读详情

相关推荐

Java 工厂模式

Java 简单工厂模式

两行代码 踏踏实实de工作 1万+

Java工厂模式

Java工厂模式 介绍 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 实例: 1、您需要一辆奥迪汽车,可以直接从奥迪工厂里面提货,而不用去管这辆奥迪汽车是怎么做出来的,以及这个汽车里面的具体实现。 优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个新的产品,只

weixin_45203607的博客 1万+

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1384

Java设计模式-工厂模式

介绍简单工厂模式,工厂方法模式,抽象工厂模式。

m0_62946761的博客 6566

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1331

基于FPGA进位链的TDC高精度延时链设计与实现

本文详细介绍了基于FPGA进位链的高精度TDC延时链设计与实现方法。通过利用FPGA的CARRY4硬件资源,构建了理论分辨率达13.25ps/级的延时链,并提供了Verilog代码实现、物理布局约束技巧以及温度补偿策略。文章还涵盖了标定方法、数据转换处理和系统验证方案,为激光测距、高能物理等需要精确时间测量的应用提供了实用解决方案。

weixin_28731223的博客 488

Java工厂模式(随笔)

三大工厂都是哪些?简单工厂模式工厂模式抽象工厂模式特殊工厂都是哪些?容器工厂模式超级工厂模式准确的来说工厂模式一共只有三种;但在我们程序员这里不止三种,还有两种,我们把它叫 ‘容器工厂模式’ 和 ‘超级工厂模式为什么它们没有增加到三大模式呢?因为它们都是基于‘简单工厂模式’扩展开辟出来的,解决了简单工厂模式存在违反开闭原则等弊端。Java简单工厂模式是一种创建型设计模式,它提供了一个工厂类,用于根据传入的参数来决定创建哪种类的实例;

是个非常热爱生活、乐观、奋斗、努力的逗比青年 6574

两级运算放大器设计与仿真

运算放大器(简称运放)是许多模拟系统和混合信号系统中的一个完整部分。各种不同复杂程度的运放被用来实现各种功能:从直流偏置的产生到高速放大或滤波。伴随者每一代 CMOS 工艺,由于电源电压和晶体管沟道长度的减小,为运放的设计不断提出复杂的课题。 运算放大器的设计可以分为两个较为独立的步骤,第一步是选择或搭建运放的基本结构,绘出电路结构草图,第二步就要选择直流电流,手工设计管子尺寸,以及设计补偿电路等等,然后在手工计算的基础上,运用模拟电路仿真软件对设计的两级运放进行仿真,并对电路进行后续的调试和修改。....

qq_50968231的博客 11万+

【Java设计模式】——工厂模式

在Java应用程序中对象无处不在,这些对象都需要进行创建,如果创建的时候直接new对象,那么如果我们要更换对象,所有new对象的地方都需要进行更改。违背了软件设计原则中的开闭原则。如果我们使用工厂生产对象,只需要在工厂中关注对象的改变即可,达到了与对象解耦的目的,工厂模式最大的特点就是解耦合,本文将介绍工厂模式的四种实现方式

雪月清的博客 2090

PADS导出PCB正反面丝印为CAD文件的方法

本文介绍如何将PADS绘制的pcb格式的PCB文件顶底层丝印及板框导出为CAD的dxf文件格式,并且将底层丝印进行镜像为正常视角

luguodeyo的博客 3296

STM32 实现 4*4 矩阵键盘扫描(HAL库、标准库 都适用)

本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可。 1、键盘原理图: 原理举例:先把 F0-F7 内部拉高,这样这个8个引脚都是高电平,然后就进行列扫描。例如:假如按下3按钮,Y3 列扫描,把F4先拉低,然后读取F0-F3的状态,就会读出为1110,这就可 以知道是F3行拉低了,同时这时候是程序控制F4拉低的,这样就可以知道是F4列导致它转态变化了的,这样就可以定位出是F4列F3行的按键按下了;其他的列也是这样子扫描

lhh_qrsly的博客 7059

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

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

liu649983697的专栏 9846

想使用dify实现docx文档的自动生成?试了一圈,感觉还是根据python-docx更靠谱

在软件开发过程中,需求文档、设计文档等材料的编写是每个开发者都绕不开的工作。最近笔者接到一个需要批量生成标准化需求文档的任务,尝试了目前热门的低代码工具Dify后,发现对于稍微复杂格式的文档生成需求(例如文本居中这么简单的需求),最终还是回归到基于python-docx库的解决方案。本文将分享两种技术路线的对比实践。

xiezhipu的博客 2549

Java 工厂模式详解

在软件开发中,对象的创建是一个基本操作。但直接在代码中使用 关键字创建对象会导致代码耦合度高、可维护性差。工厂模式(Factory Pattern)作为一种创建型设计模式,能有效解决这些问题。本文将深入探讨 Java 中的工厂模式,通过实例展示其实现方式、优势及适用场景。工厂模式的核心思想是:将对象的创建和使用分离,把对象创建逻辑封装在一个工厂类中,从而提高代码的可维护性和可扩展性。工厂模式主要分为三种类型:简单工厂模式是工厂模式的基础版本,它定义了一个工厂类来创建产品对象。抽象产品 角色具体产品 角色工

m0_73941339的博客 2004

vue2/3 - element表格组件el-table实现懒加载树型(上下级)数据、默认展开和隐藏层级,支持对表格进行修改|新增|删除,解决完成操作后树节点不刷新问题(提供示例代码,一键复制开箱即用

vue2,vue3,elementui,elementPlus,el-table,Table表格组件,表格懒加载数据,element table表格数中的树形结构懒加载,增加后数据不同步更新问题,el-table树形与el-tree树形结构的一键折叠与展开,elementui中el-tree懒加载数据 默认展开最外层节点,Element-plus Table组件树表结构默认展开一级目录,vue实现element table表格树形结构-使用懒加载时-解决子节点增删改后,不刷新子节点数据问题,解决el-tre

✅ 精选推荐文章 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JAVA设计模式之工厂模式

JAVA设计模式之工厂模式,包括简单工厂、工厂方法、抽象工厂

qq_50801874的博客 2346

jre9下载 jdk9

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

java 工厂模式

今天看了一篇文章,是讲java的开发模式 于是转载了一下 Java工厂模式 看了这么多关于工厂模式的讲解,还是觉得这篇文章讲的好理解,贴出来和大家分享分享。 一、引子 话说十年前,有一个****户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”...

不言尘世 886

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JAVA 工厂模式总结

简单工厂模式是一种创建型设计模式,它提供了一个静态方法(或其他静态机制)来封装对象的创建过程,客户端只需要传入相应的参数,就可以获取到所需要的对象实例,而无需关心具体的创建细节。定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。抽象工厂模式是一种为访问一系列相互关联或相互依赖的对象提供一个接口,而无需指定它们具体的类。在抽象工厂模式中,有一个抽象工厂接口定义了创建产品对象的操作接口,但由子类来决定实例化哪一个类。

青年有志 1495

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

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

码到三十五 6020

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

在工厂模式中,通常会定义一个抽象工厂接口,该接口声明了创建对象的方法,具体的工厂类实现了这个接口,并负责实际创建对象的过程。客户端代码通过使用工厂接口来创建对象,而不直接使用new关键字实例化对象,从而实现对象创建和使用的解耦。简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)这三种模式从上到下逐步抽象,并且更具一般性。

Java技术一点通 2744

什么java工厂模式_java的三种工厂模式是什么?

java的三种工厂模式:1、简单工厂模式,提供一个创建对象实例的功能,而无须关心其具体实现;2、工厂方法模式;3、抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,无须指定它们具体的类。一、简单工厂模式简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类实现汽车接口public interface Car {String g...

weixin_42416119的博客 1822

Java设计模式——工厂模式

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

怪咖@的博客 3635

Java工厂模式详解:方法工厂模式与抽象工厂模式

方法工厂模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。抽象工厂模式(Abstract Factory Pattern)提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。方法工厂模式和抽象工厂模式都是用于创建对象的设计模式,但它们的应用场景和侧重点不同。方法工厂模式侧重于单个对象的创建,通过子类决定实例化哪个类;

2401_83447580的博客 1911
上一篇: 单例模式
下一篇: MyBatis 入门教程
_徐林
博客等级 码龄9年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值