【愚公系列】软考高级-架构设计师 086-创建型设计模式

在这里插入图片描述

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏


🚀前言

🔎1.软件开发中的模式

在软件开发中,模式是帮助开发人员解决常见问题并提高开发效率的重要工具。模式可以分为架构模式、设计模式和惯用法三种类型。

🦋1.1 架构模式

  • 定义:软件设计中的高层决策,涉及软件系统的整体结构和全局策略。
  • 特点:反映了开发软件系统过程中所作的基本设计决策。
  • 示例:C/S(Client/Server)结构、微服务架构、MVC(Model-View-Controller)架构。

🦋1.2 设计模式

  • 定义:描述了在我们周围不断重复发生的问题,以及该问题的解决方案的核心。设计模式提供了相关问题的解决方案,使得人们可以简单方便地复用成功的设计和体系结构。
  • 四个基本要素
    • 模式名称:描述模式的简洁名称,便于记忆和讨论。
    • 问题:描述应在何时使用该模式,解决特定情境中的问题。
    • 解决方案:提供具体的设计内容,包括类和对象的结构及其交互方式。
    • 效果:描述模式应用的结果和影响,阐明其优缺点。
  • 示例:单例模式、工厂方法模式、观察者模式、策略模式。

🦋1.3 惯用法

  • 定义:最低层的模式,关注软件系统的设计与实现,通过特定的程序设计语言描述构件与构件之间的关系。
  • 特点:每种编程语言都有其特定的模式,即语言的惯用法。
  • 示例:引用计数是C++语言中的一种惯用法,Python中的上下文管理(with语句)。

🦋1.4 总结

  • 架构模式:高层决策,涉及系统的整体结构(如C/S结构)。
  • 设计模式:中层决策,提供解决常见问题的方案,包含模式名称、问题、解决方案和效果四个基本要素。
  • 惯用法:低层决策,关注特定编程语言中的实现细节和最佳实践。

理解并运用这些模式,可以帮助开发人员提高软件设计和实现的质量与效率。

🔎2.设计模式

设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。通过使用设计模式,可以避免重复劳动,简化和方便地复用成功的设计和体系结构。

🦋2.1 设计模式的四个基本要素

  1. 模式名称:描述模式的简洁名称,便于记忆和讨论。
  2. 问题:描述应在何时使用该模式,解决特定情境中的问题。
  3. 解决方案:提供具体的设计内容,包括类和对象的结构及其交互方式。
  4. 效果:描述模式应用的结果和影响,阐明其优缺点。

🦋2.2 设计模式的分类

设计模式分为三类:创建型模式、结构型模式和行为型模式。

  1. 创建型模式

    • 定义:主要处理对象的创建,避免在代码中显式地实例化对象,从而提高代码的灵活性和复用性。
    • 常见模式:工厂方法、抽象工厂、单例、建造者、原型。
    • 关键字:对象创建。
  2. 结构型模式

    • 定义:主要处理类和对象的组合,确保在不同系统部件之间建立灵活和高效的结构。
    • 常见模式:适配器、桥接、组合、装饰器、外观、享元、代理。
    • 关键字:类和对象组合。
  3. 行为型模式

    • 定义:主要描述类或对象的交互行为,关注对象之间的职责分配和通信。
    • 常见模式:责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者。
    • 关键字:交互行为。

在这里插入图片描述

设计模式通过提供解决方案,使得人们能够简单方便地复用成功的设计和体系结构。它们主要分为创建型、结构型和行为型三类,分别处理对象的创建、类和对象的组合以及类或对象的交互行为。每个设计模式包含四个基本要素:模式名称、问题、解决方案和效果。理解并记住这些模式可以有效提高软件开发的效率和质量。

🚀一、创建型设计模式

🔎1.工厂模式(Factory Pattern)

  • 定义:工厂模式就像是一家披萨店。你告诉披萨店你想要什么类型的披萨,它会根据你的需求为你制作披萨。在这里,披萨店就是一个工厂,披萨是工厂创建的产品。
  • 生活中的例子:购物时使用工厂模式,告诉工厂你需要哪种类型的衣服,然后工厂根据你的需求制作并提供相应的衣服。
  • 关键点:通过一个接口或基类来创建对象,而不是通过new关键字直接实例化对象,从而实现了创建对象的灵活性和可扩展性。

🔎2.单例模式(Singleton Pattern)

  • 定义:单例模式确保一个类只有一个实例。这就像一座城市只有一个市长,无论多少人住在这座城市,市长都是唯一的。
  • 生活中的例子:操作系统的任务管理器就是一个单例模式的应用。无论打开多少个任务管理器窗口,它们都指向同一个任务管理器实例。
  • 关键点:通过控制实例化过程,确保一个类只有一个实例存在,通常通过一个静态方法或属性来访问这个实例。

🔎3. 建造者模式(Builder Pattern)

  • 定义:建造者模式像是建造一座房子。你可以选择房子的类型、颜色、材料等,并由建筑工人按照你的选择来构建房子。通过建造者模式,可以逐步构建复杂对象,而无需亲自处理所有细节。
  • 生活中的例子:假设你是一位工程师,有一个木制房子构建者和一个砖瓦房子构建者。客户A需要一座木制房子,你将选择木制房子构建者,然后使用它的方法来逐步构建木制房子,包括设置木质墙壁、建造屋顶和安装窗户。客户B需要一座砖瓦房子,你将选择砖瓦房子构建者,并使用它的方法来逐步构建砖瓦房子,包括砖瓦墙壁、瓦片屋顶和大窗户。
  • 关键点:建造者模式使得构建过程灵活且可维护,允许创建不同风格和材质的对象。适用于需要逐步构建复杂对象的场景。

🔎4.原型模式(Prototype Pattern)

  • 定义:原型模式通过复制现有对象来创建新对象。这就像使用3D打印机复制一件艺术品或零件,从一个原型创建多个相同的物品。
  • 生活中的例子:在电影制作中,制作人可以使用原型模式来复制特效道具,以便在不同场景中使用多个相同的道具。
  • 关键点:原型模式通过克隆现有对象来创建新对象,减少了对象创建的复杂性和成本。适用于创建对象代价较高或过程复杂的场景。

在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值