设计模式——工厂方法模式(Factory Method Pattern)

.NET 设计模式—工厂方法模式(Factory Method Pattern) 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。这种模式使得对象的创建延迟到子类,从而实现了对扩展开放、对修改关闭的原则。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。 阅读详情

一、模式定义

工厂方法模式(Factory Method Pattern):定义一个抽象工厂父类用于泛化各种工厂子类,通过各个工厂子类来实例化某一种具体产品类的模式。也称作虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式。

简单来说,工厂方法模式就是简单工厂模式的推广(之前博客提到简单工厂模式),区别在于简单工厂模式将所有产品由一个工厂负责,而工厂模式实现了工厂的泛化,让一个工厂生产一种产品,使得当有新的产品加入时无需修改原有工厂代码,只需泛化新的工厂子类即可,符合了“开闭原则”。

二、模式类图

在这里插入图片描述
抽象产品(Product)类
具体产品(ConcreteProductA & B)
抽象工厂(Factory)类
具体工厂(ConcreteFactoryA & B)

三、模式简要代码

abstract class Factory{
	//这里是抽象工厂类
	abstract public Product createProduct();
}

class ConcreteFactoryA extends Factory{
	//这里是具体工厂类
	public Product createProduct() { return new ConcreteProductA();}
}
class ConcreteFactoryB extends Factory{
	//注意返回类型
	public Product createProduct() { return new ConcreteProductB();}
}

abstract class Product{
	//这里是抽象产品类
	abstract public void Print();
}

class ConcreteProductA extends Product{
	//这里是具体产品类
	public void Print() { System.out.println("This is A");}
}
class ConcreteProductB extends Product{
	public void Print() {System.out.println("This is B");}
}

//主函数
public class Main {
	public static void main(String[] args) {
		Factory A = new ConcreteFactoryA();
		Factory B = new ConcreteFactoryB();
		
		Product pA = A.createProduct();
		Product pB = B.createProduct();
		
		pA.Print();
		pB.Print();
	}
}

四、模式优缺点

1.优点:增加新的产品类时无需修改现有系统。
2.缺点:增加新的产品类时需要增加新的工厂子类,增加系统的复杂性。

SAP-PP 返工订单成本归集优化:从物料结算到成本中心的配置与增强实践 本文深入探讨SAP-PP模块中返工订单成本归集的优化方案,重点解析从物料结算到成本中心的配置与增强实践。通过结算参数文件配置、分配结构调整及增强开发实战,解决返工费用误计入物料成本的问题,确保财务核算精准性。文章还提供测试验证方案与常见报错处理技巧,助力企业实现成本数据清晰流向分析。 阅读详情

相关推荐

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图)

本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。

weixin_30296405的博客 666

设计模式之工厂方法模式(Factory Method Pattern)

一、工厂方法模式的诞生 在读这篇文章之前,我先推荐大家读《设计模式之简单工厂模式(Simple Factory Pattern)》这篇文档。工厂方法模式是针对简单工厂模式中违反开闭原则的不足,而提出的改进方案。在简单工厂模式中,每增加一个新产品,就要修改工厂类的调度方法, 针对这个问题,工厂方法模式提出,工厂类提取成抽象的类或接口,定义调度规范。每新增一种产品,不仅要提供产品的实现类,还要提供调度这种产品的工厂类。这样,用户在用工厂方法模式时,需要哪个产品,就调用哪个产品的工厂类,即可获得。就不用只通过一个

敲代码的小小酥的博客 346

torchsparse安装

torchsparse安装以及安装失败原因分析和解决

AI_BING_的博客 1万+

秒懂设计模式之工厂方法模式(Factory Method Pattern)

The essence of the Abstract Factory Pattern is to “Provide an interface for creating families of related or dependent objects without specifying their concrete classes.”.[5] abstract factory

ShuSheng007的程序人生 5224

Conformal LEC逻辑等价性检查介绍和参考脚本

分为三个产品:Conformal L、Conformal XL、Conformal GXL。L是功能性检查,XL支持复杂数据通路的综合和APR优化,GXL支持定制的stdcell和定制memory的检查。Cadence Conformal Equivalence Checker,就是常说的LEC,可以用来验证RTL、门级网表、甚至spice网表的逻辑等价性。do文件是conformal的脚本文件,可以由综合工具(RTL Compiler/Genus)自己产生(write_do_lec),也可以手写。

NanDigits的博客 7255

运用AD进行stm32最小系统PCB图的绘制

运用AD进行stm32最小系统PCB图的绘制一、PCB图的绘制(1)布局(2)布线(3)覆铜(4)电气规则检查二、给PCB添加logo三、生成garber文件总结 一、PCB图的绘制 (1)布局 1.画好原理图后,新建一个PCB项目 2.在Design中选择第二项,导入器件 3.先点击右下角第一项,再点第二项导入器件 导入成功 4.导入后效果 选择紫红色方框,按电脑上的delete键把它删掉 5.在Tools选择Outside Board,自动排布器件 排布后效果如图 6.画线,确定板子范围

lucario1的博客 2149

23种设计模式之工厂方法模式(Factory Method Pattern)【设计模式】

📒工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来让子类决定实例化哪一个类,使得一个类的实例化延迟到其子类。这种模式的核心思想是将对象的创建过程推迟到子类,从而实现更灵活、更可扩展的代码。// 抽象产品 - 文档。

李赛赛的专栏 1413

eVTOL热管理:从电动车到飞行器的技术跃迁与工程挑战

热管理系统是保障各类电动设备安全、高效运行的核心技术,其基本原理是通过冷却、加热和温度控制,确保电池、电机等关键部件在最佳工况下工作。在新能源汽车领域,热管理技术已相对成熟,但面对eVTOL(电动垂直起降飞行器)这一新兴领域,其设计逻辑需从二维地面转向三维空域,应对环境温度剧烈变化、重量约束极端严苛等全新挑战。eVTOL的热管理不仅是简单的技术移植,更涉及对电池瞬时高功率散热、乘员舱快速温控及多热源耦合等复杂工程问题的系统性解决,直接关系到飞行安全与商业航程。本文聚焦于**环境温度**和**有效载荷**等关

weixin_42521276的博客 613

【设计模式】工厂方法模式(Factory Method Pattern)

工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。这样,工厂方法模式让一个类的实例化延迟到其子类。在Java中,工厂方法模式经常用于创建对象,使得客户端代码不需要直接依赖具体的类,而是依赖于接口或抽象类。工厂方法模式是一种常见且实用的设计模式,通过定义工厂接口和具体工厂类,将对象的创建延迟到子类中实现,从而提高了代码的灵活性和扩展性。在设计系统时,根据具体需求选择合适的设计模式能够提高代码的可维护性和可扩展性。

无休居士的博客 1934

微信小程序流量主提升ecpm的一些方法

ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。

任聪聪的博客 1万+

【SCADA】KingSCADA将数据插入SQLServer的方法

1、创建数据库及数据表格;2、配置ODBC数据源。3、通过KingSCADA与数据库建立连接,将数据写入数据库对应表格。

做有价值的事,积累有价值的笔记! 4959

23种设计模式之工厂方法模式(Factory Method Pattern)

本篇文章将23种设计模式中的工厂方法模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

conda install出现CondaValueError: Malformed version string invalid character(s)解决方案

本文主要介绍了conda install出现Solving environment:failed、CondaValueError: Malformed version string invalid character(s),希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 步骤一 2.2 步骤二 2.3 步骤三

weixin_43178406的博客 6万+

设计模式——工厂方法模式(Factory Method Pattern)

说工厂方法模式之前,先说下简单工厂模式,简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下:首先将需要创建的各种不同对象(例如各种不同的Chart对象)的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类;然后提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入的参数不同创建不同的具体产品对象;

ddm 1671

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

设计模式-工厂方法模式(Factory Method Pattern)

设计模式-工厂方法模式(Factory Method Pattern)

weixin_45226668的博客 1082

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

设计模式精讲 Day 2:工厂方法模式(Factory Method Pattern)

工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定实例化哪一个类。工厂方法让类的实例化延迟到子类中进行,从而避免了直接在客户端代码中硬编码具体的类名。核心思想:将对象的创建职责交给子类,而不是在父类中硬编码。该模式通过封装对象的创建逻辑,实现了对变化的隔离,使系统更加灵活、可扩展。Log/*** 日志记录器接口*/LogFactory工厂方法:关注单一产品的创建,每个工厂只负责一种产品。抽象工厂:关注一组相关产品的创建,适合创建多个相关对象。

在未来等你的专栏 1217

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

设计模式:工厂方法模式(Factory Method Pattern)

工厂方法模式是一种创建型设计模式,主要解决对象创建的问题。它的核心思想是:把对象的创建和使用分离,让使用者不直接依赖具体类,而是通过工厂来获得对象。

TechNomad的博客 1016

设计模式之-工厂方法模式 (Factory Method Pattern)

工厂方法模式是依赖倒置原则的典型实现,通过将对象创建推迟到子类来解决创建与使用的耦合问题。当代码中直接实例化具体类时,会导致修改扩展困难,工厂方法让父类只依赖抽象接口,由子类决定具体实现。该模式虽然增加了类的数量和理解成本,但能有效支持多平台、多数据库等变化场景,符合开闭原则。核心思想是将new操作从"在这里做"变成"让子类做",实现创建逻辑与业务逻辑的解耦。

goodparty的专栏 2230

23种设计模式——工厂方法模式(Factory Method Pattern)详解

本文介绍了23种经典设计模式之——工厂方法模式(Factory Method Pattern)的说明及使用

Meteors.的博客 1381

设计模式之 - 工厂方法模式 (Factory Method design pattern)

1. 模式意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 2. 别名(Virtual Constructor) 3. 结构 4.实现 5. 应用 6.局限

比昂日记 1322

设计模式—工厂方法模式(Factory Method Pattern)

动机 相比于简单工厂模式,不再设计一个统一的动物工厂类来负责所有动物的创建,而是将具体动物的创建过程交给专门的工厂子类去完成,首先定义抽象的动物工厂类,再定义具体动物的工厂子类(例如猫,狗等等)。这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下创建新的动物,如果出现新的动物,只需要为这种新类型的动物创建一个具体的工厂类就可以获得该新动物的实例。 概述 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(

gcdqwer的博客 267

设计模式介绍和实现:工厂方法模式(Factory Method Pattern)

工厂方法模式将客户端与具体产品的实现分离,客户端只需知道产品的抽象类型,无需关心具体的实现细节,从而降低了客户端和具体产品之间的耦合性。增加了系统的抽象性和理解难度:工厂方法模式引入了更多的抽象层次,使得系统更加灵活,但也增加了理解和学习的难度。增加新的产品类时,无需修改已有代码,只需添加新的具体产品类和具体工厂类即可。类的个数增加:引入了多个工厂类和产品类,使得系统中的类的数量增加,增加了代码的复杂度和维护成本。:通过添加新的具体工厂和具体产品类,可以很方便地扩展系统的功能,而无需修改现有的代码。

AmosLLc的博客 686
上一篇: 设计模式——简单工厂模式(Simple Factory)
下一篇: 设计模式——抽象工厂模式(Abstract Factory Pattern)
L!sa3
博客等级 码龄8年 2粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值