当前位置:首页 > C# > 正文

工厂方法模式详解(C#设计模式入门与实战)

在软件开发中,C#设计模式 是提升代码可维护性、可扩展性和复用性的重要手段。今天我们要深入讲解的是工厂方法模式(Factory Method Pattern),这是创建型设计模式中最常用的一种。无论你是刚接触 C#工厂模式教程 的小白,还是有一定经验的开发者,本文都将帮助你轻松掌握这一经典模式。

什么是工厂方法模式?

工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定实例化哪一个类。换句话说,工厂方法把对象的创建推迟到子类。

这种模式非常适合需要在不指定具体类的情况下创建对象的场景,是 面向对象编程 中“依赖倒置原则”和“开闭原则”的典型体现。

工厂方法模式详解(C#设计模式入门与实战) C#设计模式 工厂方法模式 C#工厂模式教程 面向对象编程 第1张

为什么使用工厂方法模式?

  • 解耦对象的创建与使用
  • 便于扩展新产品类型而不修改现有代码(符合开闭原则)
  • 统一管理对象创建逻辑,避免散落在各处的 new 操作

C# 实现工厂方法模式

下面我们通过一个具体的例子来演示如何在 C# 中实现工厂方法模式。假设我们有一个应用程序需要创建不同类型的日志记录器(如文件日志、数据库日志等)。

第1步:定义产品接口

public interface ILogger{    void Log(string message);}

第2步:实现具体产品类

public class FileLogger : ILogger{    public void Log(string message)    {        Console.WriteLine($"[File] {message}");        // 实际项目中会写入文件    }}public class DatabaseLogger : ILogger{    public void Log(string message)    {        Console.WriteLine($"[Database] {message}");        // 实际项目中会写入数据库    }}

第3步:定义抽象工厂类

public abstract class LoggerFactory{    public abstract ILogger CreateLogger();}

第4步:实现具体工厂类

public class FileLoggerFactory : LoggerFactory{    public override ILogger CreateLogger()    {        return new FileLogger();    }}public class DatabaseLoggerFactory : LoggerFactory{    public override ILogger CreateLogger()    {        return new DatabaseLogger();    }}

第5步:客户端使用

class Program{    static void Main(string[] args)    {        // 使用文件日志工厂        LoggerFactory fileFactory = new FileLoggerFactory();        ILogger fileLogger = fileFactory.CreateLogger();        fileLogger.Log("用户登录成功");        // 使用数据库日志工厂        LoggerFactory dbFactory = new DatabaseLoggerFactory();        ILogger dbLogger = dbFactory.CreateLogger();        dbLogger.Log("订单已创建");    }}

运行结果:

[File] 用户登录成功[Database] 订单已创建

工厂方法模式 vs 简单工厂

很多初学者容易混淆工厂方法模式简单工厂。简单工厂是一个具体的类,通过 if-else 或 switch 创建不同对象;而工厂方法模式使用继承,将对象创建交给子类,更符合 面向对象编程 原则,也更容易扩展。

总结

通过本篇 C#工厂模式教程,你应该已经掌握了工厂方法模式的核心思想和实现方式。记住,它的核心价值在于:将对象的创建与使用分离,使系统更灵活、更易维护

在实际项目中,当你发现 new 关键字频繁出现且难以管理时,不妨考虑使用工厂方法模式重构代码。这不仅能提升代码质量,也是迈向高级 C#设计模式 应用的重要一步。

掌握设计模式,让你的 C# 代码更优雅、更专业!