【软件设计】常用设计模式--概述

学习设计模式是提高软件开发技能的重要步骤。下面是一些最常用的设计模式,以及它们的基本概念和使用场景:

1. 单例模式(Singleton Pattern)

概念 : 确保一个类只有一个实例,并提供全局访问点。
使用场景 : 适用于需要全局唯一实例的场景,如日志记录器、数据库连接池、配置管理等。
示例:

  • 在C#中:使用private static字段和private构造函数来实现。
  • 在Java中:使用private static字段、private构造函数,并通过getInstance()方法来获取实例。

2. 工厂模式(Factory Pattern)

概念 : 定义一个创建对象的接口,但让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。
使用场景 : 适用于需要创建一系列相关或依赖对象的场景,如数据库访问层、UI元素生成等。
示例:

  • 在C#和Java中:定义一个抽象类或接口,再由具体类实现创建对象的逻辑。

3. 策略模式(Strategy Pattern)

概念 : 定义一系列算法,把它们封装起来,并使它们可以相互替换。这些算法可以独立于使用它们的客户端变化。
使用场景 : 适用于在运行时需要选择不同算法的场景,如排序算法、支付方式选择等。
示例:

  • 在C#和Java中:定义一个策略接口,多个具体策略类实现该接口,在运行时由上下文选择并执行具体策略。

4. 观察者模式(Observer Pattern)

概念 : 定义对象间的一对多依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都会自动收到通知并更新。
使用场景 : 适用于事件驱动系统、订阅发布系统等场景,如GUI事件处理、消息队列等。
示例:

  • 在C#中:使用事件和委托机制来实现。
  • 在Java中:使用java.util.Observer接口和Observable类。

5. 装饰器模式(Decorator Pattern)

概念 : 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式是作为现有类的一个包装。
使用场景 : 适用于需要在不改变类定义的前提下,动态地为对象添加职责的场景,如扩展现有功能,日志记录,权限检查等。
示例:

  • 在C#和Java中:定义一个抽象装饰器类,该类实现或继承与被装饰对象相同的接口或基类。

6. 代理模式(Proxy Pattern)

概念 : 为其他对象提供一种代理以控制对这个对象的访问。
使用场景 : 适用于需要控制对对象的访问,或增加额外功能如延迟加载、访问控制等场景。
示例:

  • 在C#和Java中:创建一个代理类,该类具有与目标对象相同的接口,并持有一个目标对象的引用。、

小结

这些模式都是非常基础且常用的设计模式,掌握它们将为你提供良好的设计能力。

相关推荐
geovindu8 分钟前
rust: pool Pattern (续)
开发语言·后端·设计模式·rust·对象池简写模式
2302_8057710721 小时前
Day23:POM设计模式(封装)
java·开发语言·设计模式
禅道程序猿21 小时前
IPD和CMMI能一起用吗?一张表说清分工
软件开发·cmmi·硬件开发·ipd·集成产品开发
志尊宝1 天前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
范中勤2 天前
技术文档:模型工厂 `llm_provider` / `llm_use` 分层设计
设计模式·langchain·架构设计·模型工厂·llm_provider
浅尝辄止;2 天前
设计模式在HIS/LIS医疗系统中的完整实践指南(C#版)
开发语言·设计模式·c#
范中勤2 天前
适配器模式(Adapter Pattern):原理、场景与 LLM 多厂商工程落地
设计模式·架构·langchain·适配器模式·多厂商
408高手2 天前
23种设计模式
设计模式
沫璃染墨2 天前
《Linux工程实践篇(二):线程池实战——从线程安全单例到完整源码实现》
linux·开发语言·c++·单例模式·设计模式·系统架构
sarasuki3 天前
MCP 为什么是一个协议而不是一个框架呢?
设计模式·agent·mcp