Skip to content

P87 什么是设计模式?为什么资深架构师都离不开它? ​

面试题:什么是设计模式?为什么要学它?架构师为什么离不开?

1. 什么是设计模式 ​

设计模式是前人总结的、针对反复出现的软件设计问题的通用解决方案(套路)。它不是代码库,而是一套"在特定场景下怎么组织类/对象/依赖"的经验模板。

经典来源:《设计模式:可复用面向对象软件的基础》(GoF 23 种模式),分三类:

  • 创建型:单例、工厂、建造者、原型(怎么创建对象);
  • 结构型:代理、适配器、装饰器、外观、组合(怎么组织对象结构);
  • 行为型:策略、模板方法、观察者、责任链、状态(怎么协作和分配职责)。

2. 为什么要用设计模式 ​

  1. 解决重复问题:不用每次从零设计,直接套用经过验证的方案;
  2. 可维护性:代码结构清晰、职责单一,改动局部化;
  3. 可扩展性:开闭原则(对扩展开放、对修改关闭),新增功能不动老代码;
  4. 沟通效率:说"这里用策略模式"大家秒懂,是团队通用语言。

3. 为什么架构师离不开 ​

  • 架构师设计的是系统骨架:模块划分、依赖方向、扩展点——本质就是模式和原则的组合;
  • 大型框架源码(Spring、Netty、MyBatis)里全是设计模式的影子:
    • Spring:工厂(BeanFactory)、代理(AOP)、观察者(事件)、模板方法(JdbcTemplate);
    • Netty:责任链(Pipeline)、观察者(Future/Listener)、装饰器;
    • MyBatis:代理(Mapper)、建造者(SqlSessionFactoryBuilder)。
  • 架构师要权衡:什么时候用什么模式、什么时候不过度设计——这是经验和判断力,也是"资深"的体现。

4. 核心原则(比模式更重要) ​

  • 单一职责、开闭原则、里氏替换、依赖倒置、接口隔离(SOLID);
  • 模式是原则的落地手段;理解原则才能灵活用模式。

5. 加分点 ​

  • 强调"设计模式不是银弹":先理解问题,再选模式,避免为了用而用;
  • 能举出自己项目/框架里的实例(比背 23 个定义加分);
  • 追问"和设计原则的关系":模式解决特定场景,原则是更高层的指导思想。

一句话总结 ​

设计模式是解决重复设计问题的成熟套路,提升代码的可维护性、扩展性和团队沟通效率;架构师设计系统骨架时本质就是在组合这些模式,并能结合 SOLID 原则权衡取舍、避免过度设计。

基于 VitePress 重建