当前位置: 首页 > news >正文

设计模式之创建型5种

设计模式

  • 为什么设计模式是23种
  • 创建型 对象创建

为什么设计模式是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控件主题化创建
// 抽象产品</

相关文章:

  • 05-SpringBoot3入门-整合SpringMVC(配置静态资源、拦截器)
  • git命令使用小记(打补丁)
  • Ubuntu 系统上完全卸载 CasaOS
  • qwen2.5vl技术报告解读
  • PyQt6实例_批量下载pdf工具_使用pyinstaller与installForge打包成exe文件
  • 蓝桥杯 - 中等 - 绝美宋词
  • 在 Solana 中实现映射表与嵌套映射表
  • PolarDB数据库表恢复实战指南:通过控制台恢复表的完整操作流程
  • 【Kafka】消费者幂等性保障全解析
  • 大模型LLMs框架Langchain之链详解
  • 一、Python编程语言介绍
  • 微服务集成测试 -华为OD机试真题(A卷、Python)
  • 数据结构C语言练习(单双链表)
  • 深度学习 机器学习和强化学习算法的关系
  • flink 分组窗口聚合 与 窗口表值函数聚合 的区别
  • 【算法手记6】NC1 大数加法 NC40 链表相加(二) NC10 大数乘法
  • 营销库存系统设计方案
  • 《Linux运维总结:基于银河麒麟V10+ARM64架构CPU源码编译部署单实例redis7.2.6》
  • 基础认证-单选题(一)
  • Golang 的 GMP 调度机制常见问题及解答
  • 体坛联播|水晶宫队史首夺足总杯,CBA总决赛爆发赛后冲突
  • 老字号“逆生长”,上海制造的出海“蜜”钥
  • 阿联酋与美国达成超过2000亿美元协议
  • 师爷、文士、畸人:会稽范啸风及其著述
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 泽连斯基:正在等待俄方确认参加会谈的代表团组成