对结构型设计模式的理解

8、深入理解结构型设计模式 本文深入探讨了常见的结构型设计模式,包括组合模式、外观模式、享元模式和代理模式,通过Kotlin语言示例展示了它们的应用场景与实现方式。文章还分析了不同模式的核心目标、优势及实际使用中的注意事项,帮助开发者构建更灵活、可维护的软件系统。 阅读详情

在Gof设计模式中,对设计模式的主要分类为:1)创建型、2)结构型、3)行为型。创建型设计模式抽象了对象的实例化过程;结构型设计模式涉及到如何组合类和对象以获得更大的结构;行为型设计模式描述算法和对象间职责的分配。
 
那么,结构型设计模式到底如何对类和对象进行组合,以获得更大的结构,组合的指引是什么呢?Adapter/Bridge/…/Proxy七种模式只是结构型设计模式的七个实例,这七个实例的核心主题是什么呢?
通过分析,我觉得可以将结构型设计模式的主题用三个词概括:1)统一、2)概括、和3)分离。
 
1)统一:达到一致
“统一”描述了对象组合的一个主题,通过统一性便于客户使用和扩展,在Gof七种结构型设计模式中,可以归入该主题的有Adapter(适配器)、Composite(组合)模式。
 
Adapter通过将一个类的接口转换为客户希望的另一个接口,即统一Adaptee类接口到Target接口,以便于客户Client使用。
 
Composite模式统一基元对象和组合对象,从而建立一个“部分——整体”的类层次结构。通过这个结构,客户Client可以一致的使用各种类型的组件,包括基元组件和组合组件;此外对于新的组件,无论是新的基元还是新的组合组件,都可以自然的融入到该层次结构中,从而增强了可扩展性。
 
2)概括:提高抽象
“概括”也描述了对象组合的一个主题,它对一些对象进行抽象和提取,然后提供给客户使用,这样既便于客户使用,也便于对底层的被概括的对象进行扩展和维护。在Gof七种结构型设计模式中,概括为该主题的有Facade(外观)模式。
 
Facade模式为子系统中的一组对象提供一个高层接口,这个高层接口使得这个子系统更容易使用和维护。
 
3)分离:降低耦合便于扩展
分离可以说是很多模式的一个主题,不仅结构型模式,创建型/行为型设计模式中也有大量的以分离为主题的模式。通过分离可以解耦关联、增加各部分的独立性等等。在Gof七种结构型设计模式中,概括为该主题的有Bridge(桥接)、Decorator(装饰器)、Flyweight(享元)、和Proxy(代理)模式。
 
Bridge模式分离了抽象部分和实现部分,使两部分都可以独立的变化;
 
Decorator模式分离了被装饰的对象和各种用于装饰的状态和职责,从而可以在运行时灵活地对组件对象进行各种装饰;
 
Flyweight模式分离了大量小对象中的运行环境状态信息,从而使这些小对象可以共享;
 
Proxy模式通过提供代理,分离了客户Client和Subject对象,从而可以在中间提供一些辅助的功能和服务;
软件设计模式与体系结构 本书系统介绍了软件体系结构的基本原理、方法和实践,全面反映了软件体系结构研究和应用的最新进展。既讨论了软件体系结构的基本理论知识,又介绍了软件体系结构的设计和工业界应用实例,强调理论与实践相结合。 全书共4篇22章,第一篇“基础篇:软件体系结构的理论”,第二篇“软件复用与构件库的设计”,第三篇“软件规模的度量”,第四篇“软件的性能抗衰”。第一篇分为8章,介绍了软件体系结构的基础理论,包括软件体系结构的概念及演化、软件建模基础、软件体系结构的形式化、软件体系结构的风格、体系结构的描述语言、软件质量建模、设计模式等内容。第二篇分为4章,首先介绍软件复用的相关概念、发展现状以及基于复用驱动的软件过程,并对软件复用的关键因素做了详细介绍。在对构件技术的相关概念、三大主流构件技术进行分析之后,总结了几种较为经典的构件描述模型和构件检索方法。随后介绍运用软件体系结构进行构件组装的方法。第三篇分为5章,在对FPA方法以及其他的软件规模度量方法进行详细介绍的前提下,对FPA的不足提出了改进。第四篇分为5章,介绍了软件性能抗衰方面的相关研究内容。 立即下载

相关推荐

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

设计模式——结构型模式简单介绍

结构型模式 结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。 代理模式 代理,那就要对客户端隐藏真实实现,由代理来负责客户端的所有请求。 用一个代理来隐藏具体实现类的实现细节,通常还用于在真实的实现的前后添加一部分逻辑。 类似一个接口,接口的实现类(代理) Spring中的动态代理有两种: 如果我们的类定义了接口,如 UserService 接口和 UserServiceImpl 实现,那么采用 JDK 的动态代理,感兴趣的读者可以去看看 java.lang.reflect

页页的博客 2395

VC Spyglass CDC验证避坑指南:如何正确配置同步复位信号(实验二重点解析)

本文深入解析VC Spyglass CDC验证中同步复位信号的正确配置方法,通过实验二案例详细展示错误配置的典型表现及修正过程。文章提供同步复位的最佳实践方案,包括约束文件修改指南、验证流程优化建议和高级调试技巧,帮助工程师有效避免CDC验证中的常见陷阱。

rock5的博客 678

软件设计模式---结构型模式

结构型模式

weixin_42907150的博客 1363

TensorRT-LLM环境配置避坑指南:从安装到实战

本文是一份详尽的TensorRT-LLM环境配置避坑指南。文章重点解析了从Python、CUDA、PyTorch版本选择,到解决mpi4py安装这一核心难题的完整流程,并提供了经过验证的稳定版本组合与实战排错方案,帮助开发者高效部署大语言模型推理优化环境。

a0b1c2d3的专栏 983

RT-DETR 模型剪枝优化:结构化剪枝对 R18/R50 性能的影响

本文提出分层结构化剪枝策略R18:参数量减少 42%(28M→16.2M),推理速度提升 35%(15→20.3 FPS@Jetson Nano),mAP@0.5 仅降 1.2%;R50:参数量减少 55%(170M→76.5M),推理速度提升 48%(42→62.2 FPS@T4),mAP@0.5 仅降 2.1%。核心价值:为 RT-DETR 提供“精度-效率-部署”平衡的轻量化方案,推动其在边缘设备、工业质检等场景的大规模落地。部署建议。

走向CTO的路上... 464

设计模式——结构型模式

结构型模式:关注于整体最终的结构,通过继承和组合,构建出更加复杂的结构,从而提供更加强大的逻辑功能 通过结构类型可以分为类结构和对象结构,类结果主要关心类的组合,由多个类可以组合成一个更大的系统;对象结构关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 一、适配器模式:将一个类...

齐天佑 640

《用 AI 赋能医药科研创新》目录(持续更新)

本专栏旨在指导医学科研和药物研发人员运用AI技术提升研究效率。内容包括:利用AI分析文献、识别研究热点、自动生成研究草稿;在新药研发中,通过AI优化临床方案设计、受试者筛选等环节;介绍AI理论基础如大语言模型、提示词工程学及智能体技术发展历程。专栏采用5000-9000字的长文形式,系统讲解AI在医药研发各环节的应用方法,帮助研究者缩短周期、降低成本,推动医药研发进入智能化新阶段。

MD Code 499

《GOF设计模式》结构型模式的理解与思考

  在GOF《设计模式》中,对结构型设计模式进行了分析和七种具体模式的整理,通过学习、实践和思考之后,我发现似乎可以对结构型模式进行更深入的概括,下面把我的理解描述如下,希望各位同样对设计模式感兴趣的朋友批评指正。 结构型设计模式三大主题:统一、概括、分离。在Gof设计模式中,对设计模式的主要分类为:1)创建型、2)结构型、3)行为型。创建型设计模式抽象了对象的实例化过程;结构型设

qinysong的专栏 1455

APM32取代STM32的经验分享

我仔细检查了代码中与硬件相关的部分,例如外设寄存器的访问和中断处理程序的设置,并进行了相应的修改。在本文中,我将分享我将APM32引入项目中取代STM32的经验,并提供相应的源代码。我查看了APM32的官方网站、开发者论坛和相关社交媒体,了解了开发者社区的活跃度和可用的资源。总结起来,将APM32替换STM32的过程需要经过几个关键步骤:了解APM32的规格和功能、评估软件生态系统、迁移代码和调试,以及性能和功耗优化。在开始替换之前,我对APM32进行了详细的研究和评估,以确保它能够满足项目的需求。

UplKubernetes的博客 2004

AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘解决方案

本文主要介绍了AttributeError: module ‘lib’ has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK’解决方案,希望能对使用python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 5万+

关于“结构型”设计模式的理解

结构型设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 结构型不同于创建型的设计模式,我们已经通过创建型的模式做了一些能构建对象的组件,就好像我们已经能从不同的地方获取建造大楼的材料,钢筋、水泥、石材,接下来的最重要的工作,就是我们以怎样的形式去运用这些材料(对象),我是这样理解,设计模式本来就来源于建筑行业,但是能在软件行业这么流行,是基于我们可以想象的世界...

A_love_B的专栏 1332

MIKE水动力笔记1_岸线及水深数据之依靠全球数据库资源提取的方法

通过各种数据库资源来获取全球岸线及水深数据,这种方法获取的岸线及水深数据精度偏低,比较适合大尺度范围的水动力研究。

晏长街的博客 1万+

结构型7种设计模式学习理解

设计模式--7种结构型设计模式学习理解

290

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

创建型、结构型、行为型设计模式的学习理解

设计模式--23种模式的学习与汇总

493

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

架构师成长之路4:设计模式中:结构型设计模式沉浸式理解

类和对象之间如何组合与协作实现系统“结构层面”的清晰与弹性怎么组合已有的模块、类、接口,形成更大更灵活的系统。模式场景关键词适配器老接口适配新系统兼容性装饰器动态功能增强可叠加代理控制访问,延迟处理替身/中介外观简化子系统门面桥接多维度组合拆抽象与实现组合树状结构部分-整体一致性享元重复对象共享内部状态缓存“结构混乱,系统易垮;结构合理,扩展如画。——设计模式使用心得✅📖 第4篇(下)|行为型设计模式沉浸式理解:把“业务流程”变成可控套路!

ctotalk 838

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

设计模式网上资料整合理解——结构型模式总结

结构型模式概述 结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)。这些结构型模式,它们在某些方面具有很大的相似性,仔细推敲,侧重点却各有不同。 Adapter模式通过类的继承或者对象的组合侧重于转换已有的接口;Bridge模式通过将抽象和实现相分离,让它们可以分别独立的变化,它强调的是系统沿着多...

weixin_34151004的博客 70

设计模式之结构型模再理解

这几天一直在讲shej

wangdan1030的博客 858

【设计模式】02-理解常见设计模式-结构型模式

结构型模式主要用于处理类或对象的组合,以获得新的功能或实现更灵活的结构。

科技改变世界,技术驱动未来。 1172

便于理解的设计模式(结构型模式)【持续更新中】

最后在客户端代码中,我们创建了一个普通的圆形对象和一个添加了红色边框的圆形对象,通过装饰器模式来动态添加了新功能。在这个示例中,我们模拟了适配器模式。然后创建了现有的中国设备,并定义了适配器 SocketAdapter,它接受中国标准的插头,并实现了欧洲标准的插头接口。它允许通过创建一个代理对象来间接访问另一个对象,这样可以控制对该对象的访问,例如可以台南佳额外的功能,起到保护、过滤或延迟处理的作用。在这个示例中,代理模式被用于控制对互联网的访问权限,在代理对象中进行了网站的过滤控制,从而达到保护的目的。

diao446627267的博客 1388

设计模式案例开源项目推荐

设计模式案例开源项目推荐 1. 项目基础介绍与编程语言 本项目是一个关于设计模式的案例集合,由优快云公司开发的InsCode AI大模型创建和维护。项目主要采用Objective-C编程语言,提供了设计模式在真实场景中的应用实例。无论是初学者还是资深开发者,都可以通过该项目深入理解设计模式的概念和实践。 2. 项目的核心功能 该项目的主要功能是展示设计模式的实现方式,包括但不限于以下三大类设计模...

gitblog_00720的博客 488
上一篇: 什么是flyweight(元享)模式
下一篇: 代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引用.
legendmoheNote
博客等级 码龄16年 12粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值