为什么设计模式是23种
设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。这一数量的确定并非偶然,而是基于以下核心原因:
- 他们遵循“大三律”(Rule of Three),即只有经过三个以上不同类型系统的验证,一个模式才能被纳入经典体系。最终符合这一严格标准的模式共23种。
- 3种模式被划分为三类:==创建型(5种)、结构型(7种)、行为型(11种)==。这种分类基于模式的核心目标(对象创建、结构组合、行为协作),覆盖了当时软件开发中的主流场景,形成逻辑自洽的体系
- 那随着技术的发展,比如MVC模式属于新的方向 但并未纳入,也就是说GoF的23种模式是基于特定历史阶段的经验总结,而非永恒不变
创建型 对象创建
- 单例模式(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;
}
- 工厂方法模式(Factory Method)
核心思想:定义一个创建对象的接口,由子类决定实例化哪个类。
C# 实现关键:抽象工厂类 + 具体产品类 + 多态
核心价值在于隔离变化点,适用于对象创建逻辑复杂、类型可能扩展的场景
场景案列:数据库访问解耦/插件系统动态加载/支付方式多态选择/UI控件主题化创建
// 抽象产品</