【软考-架构】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种)

相关推荐
X54先生(人文科技)15 分钟前
ELR-SELLM Edge 神经元网络架构评估报告
人工智能·深度学习·架构·开源
小陈不好吃2 小时前
从单体到微服务:Spring Cloud Gateway 动态路由实战与踩坑记录
微服务·云原生·架构
混凝土拌意大利面2 小时前
基于MQ(消息队列)的RPC框架
架构
小艾.pino3 小时前
MiniMax M3顶住新一代多模态大模型的架构与实战
人工智能·架构
IT小白杨4 小时前
多店铺防关联指纹浏览器哪个好:从账号关联判定模型到环境隔离架构的一次拆解
经验分享·物联网·矩阵·架构·指纹浏览器
223糖5 小时前
思考 AI 应用架构
人工智能·架构
Dawson Zhu5 小时前
从理论到工程化:构建可靠Agent系统的六大核心工件与实战指南
人工智能·语言模型·架构·aigc·agi
她的男孩5 小时前
接口加密做成框架级能力有多难?我扒了 3600 行源码:从 RSA 握手到落库密文迁移
人工智能·后端·架构
老周聊架构6 小时前
Ontology:Palantir 架构真正的核心,不是数据库也不是知识图谱
数据库·架构·知识图谱
视频技术分享6 小时前
视频会议系统技术全解:底层架构、选型标准与实战优化
架构·音视频