设计模式之创建型5种

发布于:2025-03-29 ⋅ 阅读:(29) ⋅ 点赞:(0)

为什么设计模式是23种

设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。这一数量的确定并非偶然,而是基于以下核心原因:

  1. 他们遵循“大三律”(Rule of Three),即只有经过三个以上不同类型系统的验证,一个模式才能被纳入经典体系。最终符合这一严格标准的模式共23种。
  2. 3种模式被划分为三类:==​创建型(5种)、结构型(7种)、行为型(11种)==​。这种分类基于模式的核心目标(对象创建、结构组合、行为协作),覆盖了当时软件开发中的主流场景,形成逻辑自洽的体系
  3. 那随着技术的发展,比如MVC模式属于新的方向 但并未纳入,也就是说GoF的23种模式是基于特定历史阶段的经验总结,而非永恒不变

创建型 对象创建

在这里插入图片描述

  1. 单例模式(Singleton)
    核心思想:确保类只有一个实例,并提供全局访问点
    C# 实现关键:私有构造函数 + 静态实例 + 线程安全控制
//懒汉式(双重检查锁) 特点:延迟初始化,线程安全,适用于高并发场景
public sealed class Singleton
{
   
    private static Singleton _instance;
    private static readonly object _lock = new object();

    // 私有构造函数
    private Singleton() {
    }

    public static Singleton Instance
    {
   
        get
        {
   
            if (_instance == null)
            {
   
                lock (_lock)
                {
   
                    if (_instance == null)
                    {
   
                        _instance = new Singleton();
                    }
                }
            }
            return _instance;
        }
    }
}
//饿汉式(静态初始化)类加载时即初始化,线程安全,但可能造成资源浪费
public sealed class Singleton
{
   
    // CLR 保证静态初始化的线程安全
    private static readonly Singleton _instance = new Singleton();

    private Singleton() {
    }

    public static Singleton Instance => _instance;
}
  1. 工厂方法模式(Factory Method)
    核心思想:定义一个创建对象的接口,由子类决定实例化哪个类。
    C# 实现关键:抽象工厂类 + 具体产品类 + 多态
    核心价值在于隔离变化点,适用于对象创建逻辑复杂、类型可能扩展的场景
    场景案列:数据库访问解耦/插件系统动态加载/支付方式多态选择/UI控件主题化创建
// 抽象产品</