【软考-架构】11.3、设计模式-新

✨资料&文章更新✨

GitHub地址:https://github.com/tyronczt/system_architect

文章目录

项目中的应用

在实际项目中,我应用过多种设计模式来解决不同的问题,以下是一些例子,助于理解记忆:

  1. 单例模式(Singleton Pattern)
  • 应用场景: 在电商平台中,我使用单例模式来管理全局唯一的订单 ID 生成器。
  • 解决问题: 确保系统中只有一个订单 ID 生成器实例,避免多个实例导致 ID 冲突,保证订单数据的准确性和一致性,同时节约系统资源。

2. 工厂模式(Factory Pattern)

  • 应用场景: 在支付模块中,我使用工厂模式根据不同的支付类型(如支付宝、微信支付、银行卡支付)创建不同的支付客户端。
  • 解决问题: 将支付客户端的创建逻辑与业务代码解耦,方便扩展新的支付方式,提高代码的可维护性和可扩展性,并简化了对象创建逻辑。

3. 策略模式(Strategy Pattern)

  • 应用场景: 在商品促销模块中,我使用策略模式根据不同的用户等级(如普通会员、VIP 会员、超级 VIP 会员)采用不同的促销策略。
  • 解决问题: 避免大量的 if-else 语句,将不同的促销策略封装成独立的类,方便扩展和维护,提高代码的可读性和灵活性。

4. 模板方法模式(Template Method Pattern)

  • 应用场景: 在数据导出模块中,需要将数据导出为不同的格式(如 CSV、Excel、PDF),但导出的基本流程相同,我使用了模板方法模式。
  • 解决问题: 避免重复编写相同的导出流程代码,固定算法骨架,提高代码的复用性,同时允许子类根据需要实现具体的导出逻辑。

5. 建造者模式(Builder Pattern)

  • 应用场景: 在订单系统中,需要构建复杂的订单对象,订单包含多个属性(如商品列表、用户信息、支付信息等),我使用了建造者模式。
  • 解决问题: 避免构造函数参数过多,分步骤构建复杂对象,简化复杂对象的构建过程,提高代码的可读性和可维护性。

6. 观察者模式(Observer Pattern)

  • 应用场景: 在用户注册模块中,当用户注册成功后,需要发送欢迎短信、发送注册邮件、增加用户积分等操作,我使用了观察者模式。
  • 解决问题: 将注册成功后的操作与注册流程解耦,避免注册流程过于臃肿,实现松耦合的通知机制,提高代码的可扩展性和灵活性。

7. 装饰器模式(Decorator Pattern)

  • 应用场景: 在日志系统中,需要为日志记录添加额外的功能(如加密日志、压缩日志),我使用了装饰器模式。
  • 解决问题: 动态地为对象添加额外的功能,而无需修改其结构,提供比继承更灵活的扩展方式,遵循开闭原则,提高代码的灵活性和可扩展性。

8. 适配器模式(Adapter Pattern)

  • 应用场景: 在系统集成中,需要将第三方支付接口适配到现有的支付系统中,我使用了适配器模式。
  • 解决问题: 解决接口不兼容的问题,实现不兼容接口的协作,使现有系统能够与第三方接口无缝对接,提高系统的兼容性和可扩展性。
    总而言之,通过合理地应用这些设计模式,我解决了项目中遇到的代码重复、耦合度高、扩展性差等问题,提高了代码的可维护性、可扩展性和可复用性。在选择和应用设计模式时,需要根据具体场景权衡利弊,避免过度设计。关键是要理解模式的本质,并灵活运用。

设计模式

创建型、结构型、行为型

创建型设计模式

结构型设计模式

行为型设计模式

💯考试真题

答案:(54) D,(55)A,(56)B,(57)A

答案:C D A B


题外话

此文中讲解的设计模式过于理论,找了几篇偏实践的文章,需要细细研磨才会对设计模式有更深入的理解:

Spring 中经典的 9 种设计模式

23 种设计模式详解(全23种)

相关推荐
敲代码的约德尔人36 分钟前
JavaScript 设计模式完全指南
javascript·设计模式
guoji778841 分钟前
2026年Gemini 3 Pro vs 豆包2.0深度评测:海外顶流与国产黑马谁更强?
大数据·人工智能·架构
殷紫川1 小时前
高并发系统性能优化全链路实战:端到端榨干系统性能,百万 QPS 零卡顿
性能优化·架构
AI成长日志2 小时前
【Vibe Coding专栏】easy-vibe与vibe-vibe对比分析:两大vibecode项目技术架构、适用场景与选型指南
架构·ai编程
殷紫川2 小时前
全链路压测硬核实战:从方案落地、瓶颈根因定位到全链路性能优化
架构·测试
殷紫川2 小时前
别等业务中断才补坑!RTO/RPO 核心逻辑与全场景灾备架构选型全攻略
数据库·架构
殷紫川2 小时前
从 0 到 1 落地异地多活:单元化、数据同步与流量调度的核心壁垒全击穿
微服务·架构
殷紫川2 小时前
秒杀系统高并发核心优化与落地全指南
算法·架构
const_qiu3 小时前
微服务测试项目架构设计与实践
微服务·云原生·架构
奕成则成3 小时前
面试被问:MySQL 与 Doris/SelectDB 的架构区别。 大数据为什么禁止select *。
mysql·面试·架构