news 2026/6/1 15:57:54

创建型、结构型与行为型设计模式的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
创建型、结构型与行为型设计模式的区别

设计模式根据其目的和用途分为创建型、结构型和行为型三种类型,它们的区别如下:

创建型设计模式

  1. 目的:主要用于对象的创建过程,将对象的创建和使用分离。其关注点在于如何创建对象,通过特定的方式来控制对象的创建过程,比如隐藏对象创建的复杂细节、确保对象的唯一性等。
  2. 常见模式
    • 单例模式:保证一个类仅有一个实例,并提供一个全局访问点。例如,在数据库连接池的实现中,为了避免过多的数据库连接资源浪费,通常会使用单例模式确保只有一个连接池实例。
    • 工厂模式:包括简单工厂、工厂方法和抽象工厂。工厂模式将对象的创建逻辑封装在工厂类中,客户端通过工厂类创建对象,而不需要了解对象创建的具体细节。如游戏开发中,通过一个角色工厂来创建不同类型的游戏角色。
    • 建造者模式:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。例如,在构建一个复杂的用户对象时,该对象可能有姓名、年龄、地址、联系方式等多个属性,使用建造者模式可以方便地构建不同配置的用户对象。
  3. 解决的问题:创建型模式解决的是对象创建过程中的复杂性、灵活性以及资源管理等问题,使得对象的创建过程更易于维护和扩展。

结构型设计模式

  1. 目的:主要用于处理类或对象的组合结构,通过将类或对象组织成更大的结构,以实现功能增强或优化。其重点在于如何将类或对象组合在一起,形成更复杂的结构,同时保持结构的灵活性和可维护性。
  2. 常见模式
    • 代理模式:为其他对象提供一种代理以控制对这个对象的访问。例如,在网络访问中,当访问一些外部资源时,可能由于权限、性能等原因,通过代理服务器来代替直接访问目标资源。
    • 装饰器模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。比如,在一个图形绘制系统中,为了给一个基本图形(如圆形)添加阴影、边框等额外效果,可以使用装饰器模式。
    • 适配器模式:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。例如,在将旧的支付接口适配到新的支付系统中,适配器模式就可以发挥作用。
  3. 解决的问题:结构型模式解决的是如何将类或对象组织成更高效、灵活的结构,以满足不同的功能需求,提高代码的复用性和可维护性。

行为型设计模式

  1. 目的:主要用于处理对象之间的交互和职责分配,关注对象之间如何进行通信、协作以及如何分配职责,以实现特定的行为。其核心是通过对象之间的交互来完成复杂的任务,而不是关注对象的创建和结构。
  2. 常见模式
    • 观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。例如,在社交媒体平台上,当一个用户发布新内容时,关注该用户的其他用户会收到通知。
    • 策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。比如,在一个电商系统中,根据不同的促销活动,选择不同的折扣计算策略。
    • 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。例如,在一个文件处理系统中,读取文件、处理文件内容、保存文件的基本流程是固定的,但不同类型文件(如文本文件、二进制文件)的具体处理方式可以在子类中实现。
  3. 解决的问题:行为型模式解决的是对象之间的交互复杂性、职责分配合理性以及行为的可扩展性等问题,使系统的行为更加清晰、易于维护和扩展。

创建型设计模式侧重于对象的创建过程,结构型设计模式关注对象和类的组合结构,行为型设计模式则聚焦于对象之间的交互和职责分配。它们从不同角度为软件设计提供了有效的解决方案,帮助开发者构建更加灵活、可维护和可扩展的软件系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 17:18:58

超详细图文教程:Windows环境部署LobeChat全过程

Windows 环境部署 LobeChat 全过程:从零开始搭建你的私有化 AI 聊天平台 在今天,一个能与大语言模型顺畅对话的界面,几乎成了每个开发者、产品经理甚至普通用户的刚需。我们手握 GPT、通义千问、Llama3 这样的强大模型,却常常被原…

作者头像 李华
网站建设 2026/5/31 18:38:57

大数据领域 ClickHouse 的资源管理策略

大数据领域 ClickHouse 的资源管理策略关键词:大数据、ClickHouse、资源管理策略、性能优化、资源分配摘要:本文聚焦于大数据领域中 ClickHouse 的资源管理策略。随着大数据应用的不断发展,ClickHouse 作为一款高性能的列式数据库管理系统&am…

作者头像 李华
网站建设 2026/5/30 23:01:30

LobeChat能否对接Google Sheets?电子表格自动化更新

LobeChat能否对接Google Sheets?电子表格自动化更新 在日常办公中,你是否曾为重复填写销售报表、手动同步会议纪要或逐条录入客户信息而感到繁琐?尤其是在多平台间切换时——浏览器开十几个标签页,一边听语音记录一边敲键盘&#…

作者头像 李华
网站建设 2026/6/1 6:42:06

GPU显存不足怎么办?LobeChat动态批处理策略

GPU显存不足怎么办?LobeChat动态批处理策略 在如今大模型遍地开花的时代,越来越多企业与开发者希望部署自己的AI对话系统。但一个现实问题始终横亘眼前:GPU显存不够用。 哪怕你只运行像 Llama-3-8B 这样的“中等规模”模型,一旦多…

作者头像 李华
网站建设 2026/6/1 2:50:03

LobeChat能否实现AI写诗功能?文学创作能力评测

LobeChat能否实现AI写诗功能?文学创作能力评测 在语文课上,老师让学生模仿李白写一首关于月亮的五言绝句——这个曾经需要反复揣摩平仄、意象和典故的任务,如今只需打开一个网页,输入提示词,几秒钟就能得到数个风格各异…

作者头像 李华
网站建设 2026/6/1 1:14:47

C语言结构体详解:从定义到实战应用

在C语言编程中,结构体是一种强大的数据组织工具,它能够将不同类型的数据组合在一起,形成更复杂的数据结构。掌握结构体的使用是C语言从基础向进阶迈进的关键一步。结构体是C语言中一种重要的复合数据类型,它允许程序员将多个不同类…

作者头像 李华