news 2026/2/23 1:16:55

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

作者头像

张小明

前端开发工程师

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

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

创建型设计模式

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

结构型设计模式

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

行为型设计模式

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

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

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

LinkedIn职业建议:LobeChat撰写个人简介

LinkedIn职业建议:LobeChat撰写个人简介 在求职竞争日益激烈的今天,一份出色的LinkedIn个人简介可能就是你与理想机会之间的最后一道桥梁。它不只是简历的电子版延伸,而是一个展示专业形象、传递职业价值的动态窗口。然而,很多人依…

作者头像 李华
网站建设 2026/2/21 12:40:40

9 个 MBA 论文降AI工具,AI 写作优化推荐

9 个 MBA 论文降AI工具,AI 写作优化推荐 论文写作的战场,你是否也在挣扎? MBA毕业论文不仅是对专业知识的总结,更是对个人研究能力和学术素养的全面检验。然而,对于许多MBA学生来说,这却是一场艰难的战役。…

作者头像 李华
网站建设 2026/2/22 19:33:24

10 个高效降AI率工具,自考党必备!

10 个高效降AI率工具,自考党必备! AI降重工具:自考党论文的“隐形护盾” 在当前学术写作环境中,随着AI技术的广泛应用,论文中出现AIGC痕迹的风险显著增加。对于自考学生而言,如何在保证内容质量的同时降低查…

作者头像 李华
网站建设 2026/2/22 16:47:08

测试技术如何应用于股市个股的风险评测?

测试技术应用于股市个股风险评测,核心是通过量化指标计算、历史数据回测、多维度因子验证,识别个股的潜在风险点(如价格波动风险、基本面恶化风险、流动性风险等),并给出风险等级或预警信号。其应用逻辑遵循“数据采集…

作者头像 李华
网站建设 2026/2/22 19:54:58

Java毕设选题推荐:基于java的畅销图书推荐系统基于springboot+vue的畅销图书推荐系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/22 11:12:02

计算机Java毕设实战-基于JavaWeb的智慧养老院管理系统的设计与实现访客记录、病历档案、入院指南、药品信息【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华