设计模式之:工厂方法模式FactoryMethodPattern的实现

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

本例用到了配置文件、接口、反射、多态;

满足的设计原则:

  • 通过工厂,实现创建对象和使用对象的分离,实现松耦合,满足迪米特法则;
  • 通过配置文件指定创建对象类型,而不需更改源代码,满足开闭原则;
  • 容易实现功能扩展,只需添加新的Logger实现类和新的Factory实现类即可,无须更改源代码,满足开闭原则;
  • 面向接口编程,而不是面向具体实现类编程,满足依赖倒置原则;
  • 面向接口编程,客户端实际使用的是实现类,用实现类替换接口类,满足里氏替换原则;

类图 with StarUML

Logger接口及其实现类:

/// <summary>    /// LLogger接口    /// </summary>    internal interface Logger    {        void WriteLog();    }
    internal class FileLogger : Logger    {        public void WriteLog()        {            Console.WriteLine("文件日志记录");        }    }
    internal class DatabaseLogger : Logger    {        public void WriteLog()        {            Console.WriteLine("数据库日志记录");        }    }

Factory接口及其实现类:

    internal interface LoggerFactory    {        Logger CreateLogger();    }
    internal class FileLoggerFactory : LoggerFactory    {        public Logger CreateLogger()        {            return new FileLogger();        }    }
    internal class DatabaseLoggerFactory : LoggerFactory    {        public Logger CreateLogger()        {            return new DatabaseLogger();        }    }

配置文件:

<?xml version="1.0" encoding="utf-8" ?><configuration><appSettings><add key="factoryType" value="FactoryMethodPattern.DatabaseLoggerFactory"/></appSettings></configuration>

客户端:

    internal class Program    {        static void Main(string[] args)        {            LoggerFactory factory;            Logger logger;            //读取配置文件            string factoryType = ConfigurationManager.AppSettings["factoryType"];            //用反射创建对象            factory = Assembly.Load("FactoryMethodPattern").CreateInstance(factoryType) as LoggerFactory;            logger = factory.CreateLogger();            logger.WriteLog();            Console.Read();        }    }

运行结果:

设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML) 立即下载

相关推荐

手把手复现论文:SVPWM过调制I区与II区算法仿真(附MATLAB源码)

本文详细介绍了SVPWM过调制I区与II区算法的MATLAB仿真实现,从理论推导到Simulink建模逐步解析。通过源码示例展示幅值补偿和六边形跟踪等关键技术,帮助电力电子研究者掌握过调制算法的核心实现方法,适用于电机控制、变频器等工业应用场景。

weixin_28739079的博客 529

设计模式:工厂方法模式(java实现)

工厂方法模式和简单工厂模式比较:工厂方法模式跟简单工厂模式在结构上的不同是很明显的,工厂方法模式的核心是一个抽象工厂类,而简单工厂模式的核心在一个具体类。显而易见工厂方法模式这种结构更好扩展,权力下发,分布式比集中式更具优势。如果系统需要加入一个新的产品,那么所需要的就是向系统中加入一个这个产品类以及它所对应的工厂类。没有必要修改客户端,也没有必要修改抽象工厂角色或者其他已有的具体工厂角色。对于增加新的产品类而言,这个系统完全支持开闭原则。

maligebilaowang的博客 481

【大模型12步学习路线 · 第3步 · ③IC验证实战篇】SOTA Prompt 逐字拆解

本文拆解了4篇SOTA LLM4Verification论文的Prompt设计,重点分析了AssertLLM、RTLFixer等模型在IC验证领域的Prompt工程实践。AssertLLM通过任务分解为3个专用LLM(Spec分析、信号映射、SVA生成),结合领域RAG和定制System Prompt,将SVA准确率从GPT-4的8%提升至89%。RTLFixer采用ReAct框架实现98.5%的RTL语法错误修复率。文章总结了Prompt设计的关键技巧:任务分解、结构化输出、置信度评分、允许"不确定"标记

元直的博客 582

工厂模式之3种实现方式

目录(一) 工厂模式概述(二) 简单工厂模式(三) 工厂方法模式(四) 抽象工厂模式(五) 总结 (一) 工厂模式概述 工厂模式: 是Java中最常用的设计模式之一, 它提供了一种创建对象的最佳方式. 在工厂模式中, 我们在使用工厂类创建对象时 不会对客户端暴露 创建逻辑, 并且是通过使用一个共同的接口来指向新创建的对象 (二) 简单工厂模式 简单工厂模式: 定义一个创建对象的工厂类, 由工厂类决定创建出哪一种对象的实例, 工厂类内部已封装创建出哪一种对象的实例的逻辑代码 Phone 手机接口 inter

Admin_Lian的博客 1334

【扫地机器人测试】

本测试方案旨在系统性评估扫地机器人的核心功能、性能指标、可靠性及用户体验,验证产品是否符合设计规范、行业标准及市场需求。通过多维度、全场景的测试,精准定位产品缺陷与优化空间,为产品迭代提供数据支撑,确保上市产品的质量稳定性与用户满意度。

xuhuaiyaun的博客 1371

5、流体-结构相互作用耦合技术详解

本文详细解析了流体-结构相互作用(FSI)的两种核心耦合技术:松散耦合和紧密耦合。通过原理阐述、优缺点分析及实际应用案例,对比了两种方法的适用场景与性能差异,并进一步探讨了高级耦合技术的发展趋势和工程实践方向,为相关领域的研究人员和工程师提供了全面的技术参考。

fanta的博客 203

设计模式之工厂方法模式(Java实现)

文章目录前言一、认识工厂模式二、引出工厂模式三、工厂模式实现3.1、简单工厂模式3.2、工厂方法模式总结参考资料 前言 本篇博客是关于工厂方法模式的实现,若文章中出现相关问题,请指出! 对应代码地址:Gitee(demo-exer/ java-Lear23designpatterns)、Github(java-demo/ java-Lear23designpatterns) 所有博客文件目录索引:博客目录索引(持续更新) 一、认识工厂模式 工厂模式定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 1785

Vue3 - 详细实现流程图编辑器可视化平台示例代码,打造前端web网页流程图在线编辑绘制操作展示,vue3自定义绘制流程图在页面上画流程图功能(提供各种操作按钮及节点控件,界面美观交互式流程图插件)

vue3,绘制流程图,在线流程图制作,在vue3中实现流程图,vue3做一个制作流程图的功能,vue3流程图组件,vue3流程图,流程图绘制展示,vue3流程图可视化在线编辑源码,基于VUE3的在线绘制流程图工具,vue3+logicflow流程图,绘制动态流程图并自定义节点和线,vue使用logicFlow绘制流程图,生成各种流程图图形可连接点移除,基于Vue的流程图组件,工作流程图,流程编辑器,vue3流程组件,vue-flow绘制流程图,绘制流程图示例demo,vue3 logicflow流程图使用教

🏆 前端领域优质创作者 9965

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

工厂模式(Factory Pattern)是Java中最常用的设计模式之一,属于创建型模式。这种模式提供了一种将对象的实例化过程封装在工厂类中的方式,用于封装和管理对象的创建。工厂模式包括三种不同的形式:简单工厂模式、工厂方法模式和抽象工厂模式。这三种模式在形式和特点上是极为相似的,都是为了更好地解耦。简单工厂模式是一种最简单的工厂模式,它提供了一个创建对象的最佳方式;工厂方法模式是一种将对象的实例化过程延迟到子类中进行的模式;抽象工厂模式是一种将创建一套产品族的操作交给一个工厂处理的模式。

miaoyl的博客 833

RAG 提示词工程最佳实践

虽然目前网络上关于提示工程的相关资料已经多如牛毛,然而 RAG (检索增强生成) 任务中提示工程如何进行的资料相对而言却较少。不少朋友之前也热烈的讨论过 RAG 场景下提示词的运用,因此 Zen 禅与计算机程序设计艺术 特别推出 RAG 任务下的提示词实践经验系列分享。RAG 是检索增强生成(Retrieval Augmented Generation)的简称,是当前最火热的企业级LLM应用方案。

AI天才研究院 2011

【华为OD技术面试手撕真题】1、长度最小的子数组 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)(三种解法)

【华为OD面试手撕真题】长度最小的子数组,本专栏更新每年华为OD机试的高频手撕代码题,每个题目都会使用五种语言进行解答(C & C++& Java & Python & JS),思路分析都非常详细, 实现最低的时间复杂度和高通过率,每个解题思路超过百字,内含各个编程语言的八股文面试题,欢迎大家订阅学习, 代码可以直接运行使用,全网限时最低价,持续更新

KJ.JK 1万+

工厂方法模式的实现(Java)

工厂方法模式定义一个用于创建对象的接口,这个接口被称为工厂方法。通过这个方法,子类可以决定实例化哪一个类。它将对象的创建过程封装起来,使得客户端代码不需要了解具体的创建逻辑,只需要关注对象的使用。定义一个产品接口,声明所有由创建者及其子类构建的对象的通用接口。定义一个创建者类,声明返回产品对象的工厂方法,该方法的返回对象类型必须与产品接口相匹配。

ldwtxwh的专栏 1178

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

设计模式工厂方法模式(FactoryMethodPattern)

核心模块:Product抽象产品、ConcreteProduct具体产品、Creator抽象工厂、ConcreteCreator具体工厂 所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git 使用场景:复杂对象的创建; 优点:用户只需要知道产品的工厂,无需关心产品类和类名,新增产品只需要新增产品工厂; 缺点

didiao11300的专栏 333

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

简单工厂模式(SimpleFactoryPattern)对比工厂方法模式(FactoryMethodPattern)分析

大话设计模式这本书看了有三分之一了,对比分析一下简单工厂模式(SimpleFactoryPattern)和工厂方法模式(FactoryMethodPattern) 虽然简单工厂模式(SimpleFactoryPattern)不是23种模式之一,但是经常用到所以这本书提到了。 以书上的例子分别看下这两种模式的UML类图,大概理解一下。 这是VS软件自动生成的类图,OperationFactor

星月工厂 1327

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

您的设计模式——工厂方法模式【Factory Method Pattern 】

女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事,可不是“造人”的工作,这 个词被现代人滥用了。这个故事是说,女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛 蓝的,水是清澈的,空气是清新的,太美丽了,然后就待时间长了就有点寂寞了,没有动物,这些看的到 都是静态的东西呀,怎么办? 别忘了是神仙呀,没有办不到的事情,于是女娲就架起了八卦炉(技术术语:建立工厂)开始创建人

444

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

设计模式:工厂方法模式

(Factory Method Pattern)是一种创建型设计模式,它定义一个创建对象的接口,但由子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。

a1969212650的专栏 944

Java 基础:设计模式之工厂方法模式

工厂方法模式定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法使得一个类的实例化过程延迟到子类进行。

zhouwenxiamg的博客 745

【Python设计模式07】工厂方法模式

pass")pass工厂方法模式是一种创建型设计模式,通过定义一个用于创建对象的接口,将对象的创建过程延迟到子类,从而提高代码的灵活性和可扩展性。通过使用工厂方法模式,可以在不修改现有代码的情况下增加新产品,减少了代码耦合,提高了系统的可维护性。合理应用工厂方法模式,可以显著提升代码质量和设计水平。

weixin_55252589的博客 530

【设计模式】-工厂方法模式

该工厂类的子类负责具体的对象创建,每个子类都可以通过实现工厂接口的方式来创建自己的对象。在实际应用中,我们经常需要根据不同的条件或者参数来创建不同的对象。使用工厂方法模式,我们可以通过不同的工厂子类来创建不同的对象,而无需在使用对象的地方编写判断条件或者创建对象的具体代码。

五行缺火 814

设计模式-工厂方法模式

设计模式中工厂方法模式的讲解及代码示例

m0_68810055的博客 431

FactoryMethodPattern

工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。   工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。工厂方法模式又称为多态工厂模式. 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负...

小可的笔记本 131

工厂方法模式

在这个示例中,我们定义了抽象产品接口 `Product`,具体产品类 `ConcreteProductA` 和 `ConcreteProductB`,抽象工厂接口 `Factory`,以及具体工厂类 `ConcreteFactoryA` 和 `ConcreteFactoryB`。- **抽象工厂(Creator)**: 定义了创建对象的接口,包含一个抽象的工厂方法,让子类实现该方法来创建具体的对象。- **抽象产品(Product)**: 定义了工厂方法所创建的对象的接口,可以是抽象类或接口。

2401_82778412的博客 403

【设计模式】单例模式、工厂方法模式、抽象工厂模式

场景: 创建不同操作系统下的界面元素,如按钮和文本框。@Override// Windows 按钮渲染逻辑@Override// MacOS 按钮渲染逻辑@Override@Override这些例子演示了设计模式在具体场景中的应用,每个模式都解决了特定问题,并提供了一种结构化和灵活的解决方案。在实际开发中,根据具体情况选择适当的设计模式可以提高代码的质量和可维护性。

代码的魅力,根本走不出来 758

设计模式-工厂方法模式(C++)

简述 工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的 模式结构 UML结构图: // product.h #ifndef PRODUCT_H #define PRODUCT_H #include <string> using namespace std; // 汽车接口 class ICar { .

qq_31231915的博客 720
上一篇: 关于分布式锁你需要知道的事
下一篇: 你知道Java 中为什么不全部使用 Static 方法吗?
Java_ttcd
博客等级 码龄4年 198粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值