🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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 设计模式的四个基本要素
- 模式名称:描述模式的简洁名称,便于记忆和讨论。
- 问题:描述应在何时使用该模式,解决特定情境中的问题。
- 解决方案:提供具体的设计内容,包括类和对象的结构及其交互方式。
- 效果:描述模式应用的结果和影响,阐明其优缺点。
🦋2.2 设计模式的分类
设计模式分为三类:创建型模式、结构型模式和行为型模式。
-
创建型模式:
- 定义:主要处理对象的创建,避免在代码中显式地实例化对象,从而提高代码的灵活性和复用性。
- 常见模式:工厂方法、抽象工厂、单例、建造者、原型。
- 关键字:对象创建。
-
结构型模式:
- 定义:主要处理类和对象的组合,确保在不同系统部件之间建立灵活和高效的结构。
- 常见模式:适配器、桥接、组合、装饰器、外观、享元、代理。
- 关键字:类和对象组合。
-
行为型模式:
- 定义:主要描述类或对象的交互行为,关注对象之间的职责分配和通信。
- 常见模式:责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者。
- 关键字:交互行为。
设计模式通过提供解决方案,使得人们能够简单方便地复用成功的设计和体系结构。它们主要分为创建型、结构型和行为型三类,分别处理对象的创建、类和对象的组合以及类或对象的交互行为。每个设计模式包含四个基本要素:模式名称、问题、解决方案和效果。理解并记住这些模式可以有效提高软件开发的效率和质量。
🚀一、结构型设计模式
🔎1.适配器模式(Adapter Pattern)
- 定义:适配器模式允许两个不兼容的接口协同工作。它就像使用电源适配器将外国电器插头适配到国内插座,使不同的类可以一起工作。
- 生活中的例子:想象你有一台笔记本电脑,但只有一个USB-C接口,而你的打印机只支持USB-A接口。你可以使用USB-C到USB-A的适配器,使两者兼容。
- 关键点:适配器模式通过创建一个适配器类,转换一个类的接口,使其能够与另一个类协同工作。适用于需要兼容不同接口的场景。
🔎2.桥接模式(Bridge Pattern)
- 定义:桥接模式分离了一个对象的抽象部分和具体部分,使它们可以独立地变化。这个模式就像一座桥,将两个独立的领域连接起来。
- 生活中的例子:想象你有一辆汽车,汽车的品牌(如奥迪、宝马)和颜色(如红色、蓝色)是两个独立的变化维度。桥接模式允许你将品牌和颜色抽象出来,使你可以轻松地组合不同品牌和颜色,例如创建一个红色的奥迪或蓝色的宝马。
- 关键点:桥接模式通过分离抽象部分和具体实现部分,使它们可以独立变化,提高系统的可扩展性和灵活性。适用于需要跨多个维度进行变化的场景。
🔎3.组合模式(Composite Pattern)
- 定义:组合模式允许将对象组织成树状结构,使单个对象和组合对象都可以一致地对待。这就像将多个文件夹和文件组织成文件系统树一样。
- 生活中的例子:在操作系统中,文件夹可以包含文件和其他文件夹,创建了一个树状的组织结构。你可以对文件夹和文件执行相似的操作,如复制、删除等。
- 关键点:组合模式通过树状结构使得单个对象和组合对象的操作一致,适用于需要处理树状结构数据的场景。
🔎4.装饰器模式(Decorator Pattern)
- 定义:装饰器模式允许动态地为对象添加新的功能,而无需修改其源代码。这就像在你的家中不断地添加新的家具或装饰来改善它的外观和功能。
- 生活中的例子:如果你有一台智能音响,可以通过添加新的语音助手技能(如天气查询或音乐播放)来扩展其功能,而不需要改变音响的核心设计。
- 关键点:装饰器模式通过在运行时动态地添加功能,使得对象的功能可以灵活扩展,适用于需要扩展对象功能而不修改其源代码的场景。
🔎5.外观模式(Facade Pattern)
- 定义:外观模式提供了一个简化的接口,用于访问复杂系统中的一组接口。这个模式就像建筑物的外立面,隐藏了建筑内部复杂的结构,使外部用户可以轻松访问。
- 生活中的例子:在计算机操作系统中,你通常使用一个图形用户界面(GUI),它提供了一个易于使用的外观,隐藏了底层操作系统的复杂性。你可以点击图标、打开应用程序,而无需了解操作系统的内部工作原理。
- 关键点:外观模式通过提供简化的接口,使得复杂系统的使用变得简单和便捷,适用于需要简化复杂系统接口的场景。
🔎6.享元模式(Flyweight Pattern)
- 定义:享元模式旨在最小化内存或计算开销,通过共享尽可能多的相似对象来实现。这就像在共享办公空间中租用一个工作区,多个人可以共享同一空间,减少了资源浪费。
- 生活中的例子:在图像编辑软件中,当多个图像元素共享相同的颜色或图案时,可以使用享元模式来减少内存占用。相同的颜色或图案可以被多个图像元素引用,而不是为每个元素都存储一份相同的数据。
- 关键点:享元模式通过共享相似对象来减少内存和计算开销,适用于需要大量相似对象且内存开销较大的场景。
🔎7.代理模式(Proxy Pattern)
- 定义:代理模式允许一个对象代表另一个对象进行控制访问。就像你聘请一个房产经纪人代表你购买房产,代理模式可以控制对另一个对象的访问。
- 生活中的例子:在计算机网络中,代理服务器充当客户端和目标服务器之间的中间层,用于缓存、过滤或加速请求,以提供更好的访问控制和性能。
- 关键点:代理模式通过代理对象控制对原对象的访问,适用于需要在访问对象时增加额外功能或控制的场景。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”