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

设计模式介绍

程序设计模式(Design Patterns)是软件开发中总结和提炼出来的、被反复使用的、经过验证的代码设计经验。它们为常见的软件设计问题提供了通用的解决方案。设计模式并不是具体的代码实现,而是一种可复用的设计思想和模板。常见的设计模式主要分为三大类:

  

---

  

### 一、创建型模式(Creational Patterns)

  

主要关注对象的创建方式,目的是将对象的创建与使用分离。常见的有:

  

1. **单例模式(Singleton)**  

   保证一个类只有一个实例,并提供全局访问点。

2. **工厂方法模式(Factory Method)**  

   定义一个用于创建对象的接口,让子类决定实例化哪一个类。

3. **抽象工厂模式(Abstract Factory)**  

   提供一个创建一系列相关或相互依赖对象的接口。

4. **建造者模式(Builder)**  

   将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。

5. **原型模式(Prototype)**  

   通过复制现有的实例来创建新的实例,而不是通过 new 操作。

  

---

  

### 二、结构型模式(Structural Patterns)

  

关注类和对象的组合,解决更大的结构问题。常见的有:

  

1. **适配器模式(Adapter)**  

   将一个类的接口转换成客户希望的另一个接口,实现类之间的兼容。

2. **桥接模式(Bridge)**  

   将抽象部分与实现部分分离,使它们可以独立变化。

3. **组合模式(Composite)**  

   将对象组合成树形结构以表示“部分-整体”的层次结构。

4. **装饰器模式(Decorator)**  

   动态地给一个对象添加一些额外的职责。

5. **外观模式(Facade)**  

   为子系统中的一组接口提供一个统一的高层接口。

6. **享元模式(Flyweight)**  

   运用共享技术有效地支持大量细粒度的对象。

7. **代理模式(Proxy)**  

   为其他对象提供一种代理以控制对这个对象的访问。

  

---

  

### 三、行为型模式(Behavioral Patterns)

  

关注对象之间的通信和职责分配。常见的有:

  

1. **责任链模式(Chain of Responsibility)**  

   使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合。

2. **命令模式(Command)**  

   将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。

3. **解释器模式(Interpreter)**  

   给定一种语言,定义它的文法的一种表示,并定义一个解释器。

4. **迭代器模式(Iterator)**  

   提供一种方法顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示。

5. **中介者模式(Mediator)**  

   用一个中介对象来封装一系列的对象交互。

6. **备忘录模式(Memento)**  

   在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

7. **观察者模式(Observer)**  

   当一个对象状态发生变化时,依赖它的所有对象都会得到通知并自动更新。

8. **状态模式(State)**  

   允许一个对象在其内部状态改变时改变它的行为。

9. **策略模式(Strategy)**  

   定义一系列的算法,把它们一个个封装起来,并且使它们可以互换。

10. **模板方法模式(Template Method)**  

    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

11. **访问者模式(Visitor)**  

    封装一些作用于某种数据结构中的各元素的操作。

  

---

  

设计模式的好处在于:  

- 提高代码的可复用性和可维护性  

- 降低耦合度  

- 使代码更易于理解和扩展
 

相关文章:

  • 解除diffusers库的prompt长度限制(SDXL版)
  • vue原生table表格实现动态添加列,一行添加完换行继续添加。el-select输入框背景颜色根据所选内容不同而改变
  • 深入解读RTP协议:RFC 3550的技术分析与应用
  • 在线地图瓦片URL
  • Spring Framework 的 spring-core 和 Spring Security 兼容版本
  • springboot3+vue3融合项目实战-大事件文章管理系统-自定义校验
  • 预警功能深度测评:如何用系统降低设备突发故障率?
  • 基于 STM32 的 PC ARGB 风扇控制器设计与实现
  • 工作安排小K
  • Elasticsearch生产环境性能调优指南
  • Unity中GPU Instancing使用整理
  • 全方位详解微服务架构中的Service Mesh(服务网格)
  • 互联网大厂Java求职面试:Spring Cloud微服务架构与AI集成挑战
  • 如何在 Android 手机和平板电脑上下载应用程序
  • ATT Global赞助非小号全球行,引领RWA创新浪潮
  • springboot 1.x2.x依赖spring版本
  • MySQL 5.7 实战:JSON 字段提取、Base64 解码与引号问题全解析
  • 无人机电子防抖技术要点概述!
  • 20个关于Java编程语言的常见问题
  • Redis SETNX:分布式锁与原子性操作的核心