设计模式C#描述——工厂方法模式

C#设计模式之工厂方法模式 前言 这个相对来说有写复杂,不过多研究一会就懂了。只是千万要有耐心哦。 工厂方法模式 what 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 情景 将每个类都建立一个工厂,这样就保证扩展时不会动已经存在的类,而只需要增加工厂就可以了。遵循了开放-封闭原则 与简单工厂的区别 简单工厂模式 最大优点在于工厂类中包含了必要的逻辑判断,根据... 阅读详情

设计模式C#描述——工厂方法模式

工厂方法模式是类的创建模式,又叫做虚拟构造子模式或多态性工厂模式。它的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

简单工厂模式的缺点:

由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。

工厂方法模式的优点:

在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将创建的工作交给子类去做。这个核心类成为一个抽象工厂的角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类实例化的细节。这使得工厂方法模式可以允许系统在不修改具体工厂角色的情况下引进新的产品,使其具有超越简单工厂模式的优越性。

 

以下面情况为例讨论该模式的具体实现:

抽象工厂角色(Creator):担任工厂方法模式的核心,规定创建对象的工厂类应该实现的接口。

具体工厂角色(ConcereteCreator):负责具体产品对象的创建,实现Creator规定的接口。

抽象产品角色(Product):工厂方法模式所创建对象的超类型,规定产品应具有的接口。

具体产品角色(ConcreteProduct):实现Product所规定的接口。

示例代码如下:

Creator:

public interface Creator

     {

          Product factory();//工厂方法

     }

 

ConcreteCreator1:

 class ConcreteCreator1:Creator

     {

         public Product factory()//工厂方法

         {

              return new ConcreteProduct1();

         }

     }

 

ConcreteCreator2:

     class ConcreteCreator2:Creator

     {

         public Product factory()//工厂方法

         {

              return new ConcreteProduct2();

         }

     }

 

Product:

public interface Product

     {

        

     }

 

ConcreteProduct1:

class ConcreteProduct1:Product

     {

         public ConcreteProduct1()

         {

              Console.WriteLine ("Creat ConcreteProduct1");

         }

          

     }

 

ConcreteProduct2:

     class ConcreteProduct2:Product

     {

         public ConcreteProduct2()

         {

              Console.WriteLine ("Creat ConcreteProduct2");

         }

          

     }

 

Client:

class Client

     {

         private static Creator creator1,creator2;

         private static Product product1,product2;

         [STAThread]

         static void Main(string[] args)

         {

              creator1=new ConcreteCreator1 ();

              product1=creator1.factory();

              creator2=new ConcreteCreator2 ();

              product2=creator2.factory();

         }

     }

 

C#工厂方法模式(Factory Method)详解与应用 支付金额支付结果 阅读详情

相关推荐

C#设计模式之总结篇

一、引言     C#版本的23种设计模式已经写完了,现在也到了一个该总结的时候了。说起设计模式,我的话就比较多了。刚开始写代码的时候,有需求就写代码来解决需求,如果有新的需求,或者需求变了,我就想当然的修改自己的代码来满足新的需求,这样做感觉是理所当然的,也没感觉有什么不妥的地方。写了两年多代码,偶尔一次,听说了设计模式,据听说设计模式就是软件界的“独孤九剑”,学会之后就可以天下无敌,于是我就开...

weixin_34166847的博客 2026

fac()阶乘函数的写法

1. int main() { long w, n,i,j=1; cout<<"请输入正整数n:"<<endl; cin>>n; for(i=1;i<=n;i++) j*=i; cout<<"正整数"<<n<<"的阶乘为:"<<j<<endl; return 0; } 2. int fac(int n) { static int f=1; f=f*n; retu

u011002533的博客 1万+

深入探索工厂方法模式在C#中的应用案例

简单工厂模式(Simple Factory)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,工厂类根据传入的参数,决定创建出哪一种产品类的实例。在简单工厂模式中,通常包含以下角色:工厂(Factory):负责创建所有产品。抽象产品(Product):产品的接口或抽象类,定义产品的公共方法。具体产品(Concrete Product):具体产品的类,实现抽象产品的接口或继承抽象类。

weixin_42600407的博客 969

POJ 2346 Lucky tickets

DescriptionThe public transport administration of Ekaterinburg is anxious about the fact that passengers dont like to pay for passage doing their best to avoid the fee. All the measures that had

Czy 1527

工厂方法和抽象工厂——Factory Method & Abstract Factory

NULL 博文链接:https://chuanwang66.iteye.com/blog/1335230

InsightFace实战:如何在树莓派上部署轻量级人脸识别系统(附完整代码)

本文详细介绍了如何在树莓派上部署基于InsightFace框架的轻量级人脸识别系统。通过硬件选型、环境配置、模型优化(如MobileFaceNet)及完整代码实战,指导开发者构建本地化、低功耗的智能应用,如智能门铃,并提供了性能调优与系统服务化的进阶技巧。

weixin_29043895的博客 351

Ural-1044. Lucky Tickets. Easy!(简单题)

1044. Lucky Tickets. Easy!Time limit: 2.0 second Memory limit: 64 MB BackgroundThe public transport administration of Ekaterinburg is anxious about the fact that passengers don’t like to pay for passa

HjKon的专栏 995

Unity3D Pico VR 手势交互实战:基于MRTK3实现抓握与射线控制

本文针对Pico VR原生手势交互功能不足的问题,提供了基于MRTK3实现高级手势交互的实战解决方案。通过将MRTK3成熟的交互框架与Pico的手势追踪能力相结合,详细讲解了从环境配置、SDK导入、核心适配到真机调试的全流程,帮助开发者高效实现抓握与射线控制等复杂交互,有效提升Pico VR应用的开发效率与体验。

weixin_29011667的博客 391

POJ-2346 Lucky tickets(线性DP)

Lucky tickets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3298 Accepted: 2174 Description The public transport administration of Ekaterinburg is anxious about the ...

weixin_30512785的博客 188

基于51单片机的多功能计算器全套设计

当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且人脑比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器设计开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。 本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用5×8矩阵键盘,可以进行加、减、乘、除等十几种数字运算,同时支持括号

runweipa的博客 1743

如何构建高质量的 QA 问答知识库

NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从

Jiassheng的博客 2152

设计模式C#描述——工厂方法模式 mutou23 [原作]

?设计模式C#描述——工厂方法模式工厂方法模式是类的创建模式,又叫做虚拟构造子模式或多态性工厂模式。它的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。简单工厂模式的缺点:由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。工厂方法模式的优点:在工厂方法模式中,核心的工厂类不再负责所有的产品

lianluck的专栏 937

[Python图像处理] 二.OpenCV+Numpy库读取与修改像素

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~ 同时推荐作者的C++图像系列知识: [数字图像处理] 一.MFC详解显示BMP格式图片 [数字图像处理] 二.MFC单文档分...

杨秀璋的专栏 3万+

《C#3.0设计模式》

第01章 当C#遇见设计模式1.1 关于模式  设计模式分为:创建模式,结构模式,行为模式 1.2 关于UML   UML -- Unified Modeling Language(统一建模语言)1.3 关于C#3.0    第02章 结构模式:装饰模式,代理模式,桥接模式第03章 结构模式:组合模式,享元模式第04章 结构模式:适配器模式, 外观模式第05章 创建模式:原型模式,工厂方法模式,单...

weixin_30614587的博客 160

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9550

Altium Designer(AD24/25)PCB编辑的几种方法介绍

本文介绍了Altium Designer(AD24/25)软件中PCB编辑的四种操作方法:1)通过菜单栏"Place→Component"激活;2)点击工具栏元器件图标;3)右键快捷菜单选择;4)快捷键P+C组合操作。建议初学者先通过菜单栏和快捷菜单熟悉操作,熟练后转为工具栏和快捷键以提高效率。文章配有操作示意图,帮助用户快速掌握PCB元器件放置技巧。

fydar的博客 943

C#-设计模式—工厂方法模式

lers>下面我们就具体看下工厂方法模式在Asp.net中是如何实现的,如果对一个Index.aspx页面发出请求时,将会调用**PageHandlerFactory**中GetHandler方法来创建一个Index.aspx对象,它们之间的类图关系如下:[外链图片转存中...(img-MUWutM6T-1705203201570)]### 五、总结。

Asincereman的专栏 943

【前端基础篇】HTML5 + CSS3 入门知识

,HTML5和CSS3核心知识

前端知识分享喵 2982

C# 设计模式之工厂方法模式

C# 设计模式之工厂方法模式

鲤籽鲲的博客 1319

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【设计模式】C#设计模式:工厂方法模式

工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

承续缘 679

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【C#设计模式】4.工厂方法模式(Factory Method Pattern)【创建型】

随着需求的变化我们要不停地修改工厂里面的方法的代码,需求变化越多,里面的If–Else–也越多,这样就会造成简单工厂的实现逻辑过于复杂。设计模式是遵循一定原则而得来的,比如,我们要怎么增加代码,怎么修改代码,不是想怎么来就怎么来的,其中一个原则就是OCP原则,中文是【开放关闭原则】,对增加代码开发,对修改代码关闭,所以我们就不能总是这样修改简单工厂里面的方法。......

星Yeah 的博客 4227

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C#设计模式 之 工厂方法模式

工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。

陈言必行 -- Unity游戏开发领域优质博主 1192

C#中常见的设计模式

意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。场景:当一个系统要独立于它的产品的创建、组合和表示时;当一个系统要由多个产品系列中的一个来配置时;当你要强调一系列相关的产品对象的设计以便进行联合使用时;当你提供一个产品类库,而只想显示它们的接口而不是实现时。C# 示例// 抽象产品 A// 具体产品 A1// 具体产品 A2// 抽象产品 B// 产品 B 还可以与产品 A 协作...// 具体产品 B1result)";// 具体产品 B2。

冰茶的博客 1889
上一篇: 设计模式C#描述之——简单工厂模式
下一篇: 《JAVA与模式》学习笔记之类图中的关系
mutou23
博客等级 码龄24年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值