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

面试中常问的设计模式及其简洁定义

🎯 一、面试中常问的设计模式及其简洁定义

模式名常被问到解释(简洁)
单例模式✅ 高频保证一个类只有一个实例,并提供全局访问点。
工厂模式✅ 高频创建对象的接口由子类决定,屏蔽了对象创建逻辑。
抽象工厂模式提供多个产品族的一组工厂方法。
建造者模式将复杂对象的构建过程拆分,并允许按步骤构建。
原型模式通过复制已有对象来创建新对象。
策略模式✅ 高频封装一组可互换的算法,并使它们之间可以替换。
观察者模式✅ 高频对象之间一对多依赖关系,通知所有观察者对象。
适配器模式转换接口,使原本不兼容的接口协同工作。
装饰器模式动态地添加功能,而无需修改原类结构。
责任链模式将多个处理器连接成链,请求沿链传递直到被处理。
命令模式☑️封装请求为对象,方便存储、撤销或日志记录。


✅ 二、常见面试问题与回答示范


1️⃣ Q:什么是单例模式?为什么用它?

A:单例模式是一种创建型设计模式,用来确保某个类只有一个实例,并提供一个全局访问点。在系统中有些对象,比如数据库连接池、日志系统、线程池,只需要一个实例,这时就用单例模式。
它可以避免资源浪费,同时方便管理,比如在 Go 中可用 sync.Once 实现线程安全的懒加载。


2️⃣ Q:多例模式是什么?和单例有什么区别?

A:多例模式是指一个类可以创建有限个实例(不是唯一也不是无限),比如每个数据库连接根据配置创建一个实例,常用于数据库连接池、资源管理等场景。

单例是严格的一个实例,多例可以是多个(但受限)。


3️⃣ Q:工厂模式的作用是什么?和 new 有啥区别?

A:工厂模式主要是为了解耦对象创建的过程和使用者,通过一个工厂类封装 new 的细节。它可以让代码更灵活、更符合开闭原则。如果直接用 new,就把对象的类型硬编码死了,不利于扩展和测试。


4️⃣ Q:抽象工厂和工厂方法有什么区别?

A:工厂方法针对的是一个产品等级结构,比如生产不同类型的按钮;而抽象工厂是为多个产品族提供一组创建接口,比如一整套 UI(按钮、窗口、文本框)。抽象工厂更复杂,适用于多种产品组合的场景。


5️⃣ Q:什么是观察者模式?用在哪里?

A:观察者模式是行为型设计模式之一,用于建立对象之间的一对多依赖关系,当一个对象(被观察者)状态变化时,所有依赖它的对象(观察者)都会收到通知并自动更新。

场景:GUI 事件监听、发布订阅系统(如消息队列)、Model-View 分离。


6️⃣ Q:策略模式和状态模式的区别?

A:策略模式强调算法的可替换性,用户根据需要选择不同策略;状态模式强调对象状态的变化行为不同。策略是用户主动选,状态是系统内部变化导致行为切换。


7️⃣ Q:装饰器和适配器有什么区别?

特点装饰器模式适配器模式
目的添加额外功能兼容不同接口
影响对象原对象 + 新功能将 A 接口转为 B 接口
举例记录日志、权限校验旧接口适配新系统


🧠 三、常考设计原则(附一句话)

原则名一句话记忆
SRP(单一职责)一个类只负责一件事
OCP(开闭原则)对扩展开放,对修改关闭
LSP(里氏替换)子类可以替换父类使用
DIP(依赖倒置)面向接口编程
ISP(接口隔离)不要强迫用户实现不需要的接口


📌 面试应对建议

  • 回答模式定义 + 应用场景 + 示例代码(可简述)

  • 面试建议熟练掌握:单例、工厂、策略、观察者、装饰器

  • 能联系实际项目更佳,比如:“我用工厂模式封装了我们系统中不同数据源对象的创建逻辑”

相关文章:

  • 如何使用依赖注入来实现依赖倒置原则?
  • 【RP2350】香瓜树莓派RP2350之Debug仿真报错的处理
  • PDF2zh插件在zotero中安装并使用
  • java.util.Timer
  • 华为配置篇-RSTP/MSTP实验
  • 关于 js:6. 网络与加密模块
  • FlySecAgent:——MCP全自动AI Agent的实战利器
  • C# 通过ConfigurationManager读写配置文件App.Config
  • 场馆订 场馆预订平台 数据库设计
  • 【Tools】VScode使用CMake构建项目
  • 前端Web开发HTML5+CSS3+移动web(基础-flex)
  • 【计算机视觉】基于Python的相机标定项目Camera-Calibration深度解析
  • 学习通刷课稳定版(美化面板+完全免费)
  • 大学之大:苏黎世大学2025.5.11
  • OpenWrt开发第7篇:OpenWrt配置支持Web界面
  • GC垃圾回收
  • 「OC」源码学习—— 消息发送、动态方法解析和消息转发
  • 【RP2350】香瓜树莓派RP2350之USB虚拟串口
  • 操作系统 : 线程同步与互斥
  • 深入浅出之STL源码分析7_模版实例化与全特化
  • 广东早熟荔枝“抢滩”上海,向长三角消费者喊话:包甜,管够
  • 四部门:到2025年底,全国行政村5G通达率超过90%
  • 高适配算力、行业大模型与智能体平台重塑工业城市
  • 竞彩湃|热刺、曼联一周双赛不易,勒沃库森能否欢送阿隆索
  • 美国长滩港货运量因关税暴跌三成,港口负责人:货架要空了
  • 印度证实印巴已同意停火