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

设计模式概览

设计模式是一种在软件设计中被广泛使用的解决方案,旨在提高软件的可重用性、可维护性和可扩展性。设计模式可以分为三大类:创建型、结构型和行为型。

1、创建型模式

这些模式主要关注对象的创建过程,提供了不同的方式来创建对象,以便能够在系统中有效地使用它们。

  • 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。
  • 工厂方法模式(Factory Method):定义一个创建对象的接口,但由子类决定实例化哪个类。
  • 抽象工厂模式(Abstract Factory):提供一个接口,用于创建一系列相关或者相互依赖的对象,而无需指定它们的具体类。
  • 建造者模式(Builder):使用多个简单的对象一步一步构建一个复杂的对象,允许构建过程的不同表现。
  • 原型模式(Prototype):通过复制现有的实例来创建新的对象,而不是通过实例化类。

2、结构型模式

这些模式主要关注如何将对象和类组合成更大的结构,以便可以更灵活地实现功能。

  • 适配器模式(Adapter):将一个接口转换成客户端期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类可以在一起工作。
  • 桥接模式(Bridge):将抽象部分与实现部分分离,使他们可以独立变化。
  • 组合模式(Composite):将对象组合成树形结构以表示部分与整体的层次结构,客户端可以统一处理单个对象和组合对象。
  • 装饰者模式(Decorator):动态地给对象添加额外的职责,提供比继承更灵活的扩展功能。
  • 外观模式(Facade):为复杂子系统提供一个简单的接口,简化客户端对复杂系统的使用。
  • 享元模式(Flyweight):通过共享对象来减少内存使用,适用于大量相似对象的场景。
  • 代理模式(Proxy):为其他对象提供一个代理以控制对该对象的访问。

3、行为型模式

这些模式主要关注对象之间的通信和责任分配,帮助管理复杂的控制流和职责分配。

  • 责任链模式(Chain of Responsibility):将请求的发送者与接收者解耦,将请求沿着处理链传递,直到有一个对象处理它。
  • 命令模式(Command):将请求封装为对象,从而可以使用不同的请求、队列请求或日志请求的操作。
  • 解释器模式(Interpreter):定义一个语言的文法,并提供一个解释器来处理该语言中的句子。
  • 迭代器模式(Iterator):提供一种方法来顺序访问聚合对象中的元素,而无需暴露该对象的内部表示。
  • 中介者模式(Mediator):用一个中介对象来减少多个对象之间的通信,简化对象之间的交互。
  • 备忘录模式(Memento):在不暴露对象细节的情况下,捕获对象的内部状态,以便在需要时恢复该状态。
  • 观察者模式(Observer):定义一种一对多的依赖关系,以便当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。
  • 状态模式(State):允许一个对象在其内部状态改变时改变其行为,类似于对象的类变化。
  • 策略模式(Strategy):定义一系列算法,并将每个算法封装起来,使它们可以相互替换。
  • 模板方法模式(Template Method):定义一个操作的骨架,而将一些步骤延迟到子类中,允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。
http://www.lryc.cn/news/470288.html

相关文章:

  • 力扣每日一题打卡 684. 冗余连接
  • 什么是微服务中的反应性扩展?
  • 【MyBatis】MyBatis-config标签详解
  • 使用AVPlayer进行音频播放开发基础设计
  • API网关的作用--为什么微服务需要一个API网关?
  • [0154].第5节:IDEA中创建Java Web工程
  • React03 组件 Props
  • 多线程——线程安全的集合类
  • 自动化数据库管理:如何通过存储过程动态创建 MySQL 对象
  • 480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?
  • unity中GameObject介绍
  • 洛谷——P8468 [Aya Round 1 C] 文文的构造游戏(01构造问题)
  • 双击热备和负载均衡的区别
  • 如何使用 cPanel 部署 WordPress临时网站
  • Android 自定义 Dialog 实现列表 单选,多选,搜索
  • 下载地址合辑(持续更新)
  • Android Kotlin 高阶函数详解及其在协程中的应用
  • CSS基础—网页布局(重点!)
  • 【Fargo】17:vs工程转qt构建:QT6 不支持32bit转向qt5.15.2
  • ​智能电表蓝牙芯片方案
  • miRNA分析流程学习(一)/TCGAmiRNA数据下载
  • 西南大学软件专硕考研难度分析!
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21
  • 安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)
  • 【AI换装整合及教程】CatVTON:时尚与科技的完美融合
  • 接口测试(七)jmeter——参数化(RandomString函数)
  • simple_php
  • 网络搜索引擎Shodan(4)
  • 【Flask】一、安装与第一个测试程序
  • R语言笔记(二):向量