欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 面试中常问的设计模式及其简洁定义

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

2025/5/14 0:11:19 来源:https://blog.csdn.net/xsh219/article/details/147878956  浏览:    关键词:面试中常问的设计模式及其简洁定义

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

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


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


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(接口隔离)不要强迫用户实现不需要的接口


📌 面试应对建议

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

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词