工厂方法模式
The Factory Method design pattern defines an interface for creating an object , but let subclasses decide which class to instantiate. This pattern lets a class defer instantiation to subclass.
UML Class Diagram
Product: This is an interface for creating objects, here, we need to define the operations a product should have.
ConcreteProduct: This is a class that implements the Product interface.
Creator: This is an abstract class or interface that declares the facotry method, which returns an object of type product.
ConcreteCreator: there are the classes that implement the Abstract class or interface and override the factory method to return an instance of the Concrete Product.
Structure Code IN C#

public interface ICreditCard { string GetCardType(); Int32 GetCardLimit(); Int32 GetAnnualCharge(); } public class MoneyBack : ICreditCard { public int GetAnnualCharge() => 500; public int GetCardLimit() => 10000; public string GetCardType() => "MoneyBack"; } public class PlatiumCard : ICreditCard { public int GetAnnualCharge() => 600; public int GetCardLimit() => 20000; public string GetCardType() => "Platium"; } public class Titanium : ICreditCard { public int GetAnnualCharge() => 800; public int GetCardLimit() => 50000; public string GetCardType() => "Titanium"; }

public interface ICreditCardFactory { ICreditCard CreateCreditCard(); } public class MoneyBackFactory : ICreditCardFactory { public ICreditCard CreateCreditCard() { return new MoneyBack(); } } public class PlatiumFactory : ICreditCardFactory { public ICreditCard CreateCreditCard() { return new PlatiumCard(); } } public class TitaniumFactory : ICreditCardFactory { public ICreditCard CreateCreditCard() { return new Titanium(); } }

var titaniumFactory = new TitaniumFactory(); var titanium = titaniumFactory.CreateCreditCard(); Console.WriteLine($"The credit card type: {titanium.GetCardType()}, limit: {titanium.GetCardLimit()}, annual charge: {titanium.GetAnnualCharge()}");
工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类来决定实例化哪一个类。工厂方法使一个类的实例化延迟到其他子类。
与简单工厂的对比:
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
工厂方法实现时,客户端需要决定实例化哪一个工厂来实例化具体的类,选择判断的问题还是存在的,也即是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。你想要加功能,本来时改工厂类的,而现在要改客户端。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)