设计模式是在软件设计中解决常见问题的可重用解决方案。它们是经过验证的、被广泛接受的最佳实践,可以帮助开发者编写更可维护、可扩展和可重用的代码。

解决的核心痛点:如何在软件开发中避免重复造轮子?设计模式提供了经过验证的解决方案,让开发者能够复用前人的经验,而非从零开始解决已知问题。


核心命题


运行机制

设计模式通常包含三个核心角色:

  • 创建型:关注对象创建机制
  • 结构型:关注对象组合方式
  • 行为型:关注对象间通信
graph TB
    subgraph 创建型
        A1[单例模式]
        A2[工厂模式]
        A3[建造者模式]
    end

    subgraph 结构型
        B1[装饰器模式]
        B2[组合模式]
        B3[适配器模式]
    end

    subgraph 行为型
        C1[观察者模式]
        C2[策略模式]
        C3[发布-订阅模式]
    end

关键区别

维度设计模式算法
目的代码结构优化问题求解
粒度代码级别数据/计算级别
复用方式思想/原则具体实现
上下文依赖强(需判断场景)弱(普适)

应用场景

  • 适用场景
    • 代码组织:需要结构化代码时
    • 团队协作:统一代码风格和思路
    • 技术传承:让新手快速理解代码意图
  • 误用
    • 过度设计:简单问题强行用模式
    • 为用而用:不理解模式适用场景
    • 死记硬背:不知其原理

前端常用设计模式

模式类型描述
单例模式创建型确保一个类只有一个实例
观察者模式行为型定义对象间的一对多依赖关系
发布订阅模式行为型发布者和订阅者解耦
策略模式行为型定义一组可互换的算法
工厂模式创建型创建对象的接口
装饰器模式结构型动态添加额外职责
组合模式结构型树形结构表示整体 - 部分
模块模式创建型IIFE 封装私有作用域

知识图谱


参考延伸

  • 《设计模式:可复用面向对象软件的基础》(Gang of Four)
  • Refactoring Guru