返回首页

设计模式总览(面试版)

一、面试常考点

1. 设计模式是什么

设计模式是可复用的“解决方案模板”,不是可直接复制的业务代码。

2. 为什么要用设计模式

核心目的是提升可维护性、可扩展性、协作沟通效率。

3. 三大分类怎么记

创建型关注“怎么创建对象”;结构型关注“怎么组合对象”;行为型关注“怎么协作通信”。

4. 面试常追问

“你在项目里真正用了哪些模式?解决了什么问题?有无量化收益?”

二、细节介绍

1. 创建型模式

典型有:单例、工厂、抽象工厂、建造者、原型。

2. 结构型模式

典型有:代理、装饰器、适配器、外观、组合、桥接、享元。

3. 行为型模式

典型有:策略、观察者、命令、模板方法、状态、责任链、中介者等。

三、示例代码

// 一个极简“模式注册中心”示例:统一组织可复用方案
class PatternRegistry {
  constructor() {
    this.map = new Map()
  }

  register(name, impl) {
    this.map.set(name, impl)
  }

  get(name) {
    if (!this.map.has(name)) {
      throw new Error(`Pattern not found: ${name}`)
    }
    return this.map.get(name)
  }
}

const registry = new PatternRegistry()
registry.register('singleton', { note: '全局唯一实例' })
registry.register('strategy', { note: '可替换算法' })

console.log(registry.get('strategy').note)

四、常用应用场景

1. 前端工程化

构建工具插件体系常体现策略、工厂、责任链思想。

2. 组件系统

弹窗、通知、全局状态通常用单例;渲染适配常用策略。

3. 业务系统

权限控制、缓存层、接口封装常用代理;事件总线常用观察者/发布订阅。

五、高频追问标准答法(Q/A)

1. Q: 设计模式是不是越多越好

A: 不是。模式是手段,不是目标。简单问题优先简单方案。

2. Q: 如何判断该不该上设计模式

A: 看变化频率、复用需求、团队协作成本,而不是看“模式是否高级”。

3. Q: 面试怎么证明你真的会用

A: 给真实项目案例:问题背景、为何选该模式、改造前后收益。