结构型设计模式

结构型设计模式(7种) 这是本周讲课内容,花了大概一周时间准备,上csdn、github、z-library上找了不少材料,花了不少心血。最后因为时间原因这周讲课大概率也讲不了了,索性先写成博客发出来,供以后复习设计模式时回头看。 阅读详情
结构型设计模式

结构型设计模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。结构模式包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、亨元模式。

1. 代理模式

实现方式:代理模式在不改变原始类接口的条件下,为原始类定义一个代理类,主要目的是为了控制访问,而非加强功能,这是它跟装饰器模式最大的不同。一般情况下,我们让代理类和原始类实现同样的接口。但是,如果原始类并没有定义接口,并且原始类代码并不是我们开发维护的。在这种情况下,我们可以通过让代理类继承原始类的方法来实现代理模式。

静态代理与动态代理:静态代理需要针对每个类都创建一个代理类,并且每个代理类中的代码都有点像模板式的重复代码,增加了维护成本和开发成本。对于静态代理存在的问题,可以通过动态代理来解决。不事先为每个原始类编写代理类,而是在运行的时候动态地创建原始类对应的代理类,然后在系统中用代理类替换掉原始类。

使用场景:代码模式常用在业务系统中开发一些非功能性的需求,比如:监控、统计、鉴权、限流、事务、幂等、日志。将这些附加功能与业务功能解耦,放到代理类统一处理,只需要关注业务方面的开发。除此之外,代理模式还可以用在RPC、缓存等应用场景中。

2. 桥接模式

桥接模式的代码实现比较简单,但是理解起来比较有难度,并且应用场景也比较局限,所以,相对来说,桥接模式在实际项目中并没有那么常用,只需要简单了解,见到能认识就可以,并不是学习的重点。

理解方式:将抽象与实现解耦,让它们能够独立开发。这种理解方式比较特别,应用场景也不多。另外一种理解方式更加简单,等同于组合优于继承的设计原则,这种理解方式更加通用,应用场景比较多。不管是哪种理解方式,它们的代码结构都是相同的,都是一种类之间的组合关系。对于第一种理解方式,弄懂定义中 “抽象” 和 “实现” 两个概念,是理解它的关键。定义中的 “抽象”,指的并非是抽象类或接口,而是被抽象出来的一套类库,它只包含骨架代码,真正的业务逻辑需要委派给定义中的 “实现” 来完成。而定义中的 “实现” ,也并非 “接口的实现类”,而是一套独立的类库,“抽象” 和 “实现” 独立开发,通过对象的组合关系组装在一起。

3. 装饰器模式

装饰器模式主要解决继承关系过于复杂的问题,通过组合替代继承,给原始类添加增强功能。这也是判断是否该用装饰器模式的一个重要依据。除此之外,装饰器模式还有一个特点,就是可以对原始类嵌套使用多个装饰器。为了满足这样的需求,在设计的时候,装饰类需要跟原始类继承相同的抽象类或者接口。

4. 适配器模式

定义:代理模式、装饰器模式提供的都是跟原始类相同的接口,而适配器提供跟原始类不同的接口。适配器模式是用来做适配的,它将不兼容的接口转换为可兼容的接口。让原本由于接口不兼容而不能一起工作的类可以一起工作。

实现方式:类适配器和对象适配器。其中,类适配器使用继承关系来实现,对象适配器使用组合关系来实现。

适配器模式是一种事后的补救策略,用来补救设计上的缺陷。应用这种模式算是 “无奈之举”。如果在设计初期,就能规避接口不兼容的问题,那么这种模式就无用武之地了。在实际开发中,什么情况下才会出现接口不兼容呢?有下面 5 种场景:

  1. 封装有缺陷的接口设计
  2. 统一多个类的接口设计
  3. 替换依赖的外部系统
  4. 兼容老版本接口
  5. 适配不同格式的数据
5. 门面模式

门面模式原理、实现都比较简单,应用场景比较明确。通过封装细粒度的接口,提供组合各个细粒度接口的高层次接口,来提高接口的易用性,或解决性能、分布式事务问题。

6. 组合模式

组合模式跟面向对象设计中的组合关系 ( 通过组合来组装两个类 ),完全是两码事。这里讲的 “组合模式”,主要是用来处理树形结构数据。正是因为其应用场景的特殊性,数据必须能表示成树形结构,这也导致了这种模式在实际的项目开发中并不那么常用。但是,一旦数据满足树形结构,应用这种模式就能发挥很大的作用,能让代码变得非常简洁。

组合模式,更像是对业务场景的一个数据结构和算法的抽象。其中,数据可以表示成树这种数据结构,业务需求可以通过在树上的递归遍历算法来实现。组合模式,将一组对象组织成树形结构,将单个对象和组合对象都看作树中的节点,以统一处理逻辑,并且利用树形结构的特点,递归地处理每个子树,依次简化代码实现。

7. 亨元模式

亨元就是被共享的单元。亨元模式的意图是复用对象,节省内存,当然前提是亨元对象是不可变对象。

具体来说,当一个系统中存在大量重复对象的时候,就可以利用亨元模式,将对象设计成亨元,在内存实例中保存一份实例,供多处代码引用,这样可以减少内存中对象的数量,以达到节省内存的目的。实际上,不仅仅相同的对象可以设计成亨元,对于相似对象,也可以将这些对象中相同的部分 (字段) ,提取出来设计成亨元,让大量相似对象引用这些亨元。

AIOps智能运维:从数据治理到故障自愈的实践指南 AIOps(智能运维)通过融合人工智能与运维管理,构建了感知-决策-执行的闭环体系。其核心技术包括多维度数据采集、机器学习算法和自动化执行,显著提升了告警治理、故障定位和容量预测的效率。在数据层,全量性、实时性的数据采集是基础,而算法层的异常检测和根因分析则依赖统计方法、孤立森林和LSTM等模型。AIOps尤其适用于处理告警风暴和复杂系统故障,如在电商大促中通过K-Means聚类减少92%的告警量。随着云原生和边缘计算的普及,AIOps正逐步实现与Service Mesh、Serverless等技术的深度集 阅读详情

相关推荐

STM32F103C8T6驱动DM542步进电机:从CubeMX配置到按键控制的全流程避坑指南

本文详细介绍了如何使用STM32F103C8T6通过CubeMX配置驱动DM542步进电机的全流程,包括PWM频率计算、GPIO模式选择及按键控制实现。重点解决了常见硬件连接错误、PWM参数配置及加减速算法优化,帮助开发者快速搭建稳定的电机控制系统。

weixin_42741930的博客 308

设计模式之结构型模式

结构型模式主要用于处理类或对象的组成结构,即如何将类或对象组合成更大的结构。这些模式通常关注于对象的组合、接口的设计以及类的组合关系。通过这些模式,我们可以更灵活地设计类结构,提高代码的可复用性和可维护性。结构型模式主要用于处理类或对象的组成结构,通过组合、委托、封装等方式,提高代码的可复用性和可维护性。常见的结构型模式包括适配器模式、桥接模式、组合模式、装饰器模式、代理模式、享元模式和外观模式。每种模式都有其独特的应用场景和优点,理解并掌握这些模式可以帮助我们在实际开发中更好地设计和优化代码结构。

m0_64974617的博客 1610

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

【设计模式】——结构型设计模式

结构型设计模式涉及如何组合类和对象以获得更大得结构。结构类模式采用继承机制来组合接口或实现。 结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能得一些方法。因为可以在运行时刻改变对象组合关系,所以对象组合方式具有更大得灵活性,而这种机制用静态组合是不可能实现的。 适配器(Adapter) 意图:将一个类得接口转换成客户希望得另外一个接口,Adapter模式使得...

一只蓝精灵 552

Acute逻辑分析仪TL4134E实战:从触发电平到协议解析的完整避坑指南

本文是一份针对Acute逻辑分析仪TL4134E的实战避坑指南。文章深入解析了触发电平分组、采样率与存储深度权衡、高级触发等核心概念,并提供了混合电压系统测量、eMMC调试内存优化、SPI/I2C/UART协议解析排错等具体配置技巧,帮助硬件工程师和嵌入式开发者高效捕获与分析数字信号,快速定位通信问题。

weixin_29207149的博客 404

FPGA领域四大顶级会议全景解读:从架构到应用的技术风向标

本文全景解读FPGA领域四大顶级会议(FPGA、FCCM、FPL、FPT),剖析其各自定位与技术风向。FPGA会议聚焦架构与工具创新,FCCM专攻硬件加速与定制计算,FPL覆盖从理论到应用的广泛领域,FPT则重点关注亚太市场与前沿应用。跟踪这些会议是把握FPGA技术演进、寻找创新灵感和应用方案的高效途径。

weixin_29274969的博客 335

《设计模式》第三部分 结构型设计模式 第8章 结构型设计模式简介

结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式可以分为类结构型模式和对象结构型模式: 类结构型模式关心类的组合,采用继承机制来组织接口和类,即由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。 对象结构型模式关心类与对象的组合,采用组...

不问归期的博客 770

华三模拟器实战:IPSec VPN穿越NAT的完整配置与调试(附常见问题排查)

本文详细解析了华三模拟器中IPSec VPN穿越NAT的完整配置与调试方法,包括基础环境准备、分步配置、ACL协调策略及高级故障排查。通过实战案例和关键参数解析,帮助网络工程师解决IPSec与NAT协同工作的典型问题,提升企业网络安全性。

weixin_33724046的博客 461

介绍Java结构型设计模式

介绍Java结构型设计模式 本文我们聚焦java中实现结构设计模式,讨论它们是什么以及它们之间的基本差异。 设计模式分类 根据GOF对设计模式的分类,有三种: 创建型模式 结果型模式 行为型模式 简言之,结构模式处理类和对象的组合。它们提供不同方式使用对象组合和继承创建一些抽象。属于结构型模式有代理模式,装饰模式,适配器模式,桥接模式,门面模式,享元模式,组合模式。 代理模式 通过该模式,我们...

neweastsun的专栏 385

MATLAB从入门到精通-APP调用simulink中的参数,并且修改,将结果返回到APP中

本次案例为以下微分方程: 其中方程的初始值为: Step1:搭建simulink文件,如下图所示: 初始值配置在积分模块中,如下图所示: Step2:制作app 操作视频: ,时长01:11 代码: 本文包括APP如何回调simulik中d的参数,以及把simulink中的仿真结果输出到APP中的绘图界面中。 核心代码如下: ...

wenyusuran的专栏 3042

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

weixin_42412049的博客 2297

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

设计模式的核心思想 : 广义——软件设计模式是可解决一类软件问题并能重 复使用的软件设计方案 狭义——设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述,是在类和对象的层次描述的可重复使用的软件设计问题的解决方案设计模式按目的分类可以分为创建型、行为型、结构型,按范围分类可以分为类模式和对象模式。设计模式之间的关系如下图所示:类结构型模式关心类的组合,系统中一般只存在继承关系和实现关系。对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象。作用:将一个

m0_74399268的博客 702

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

设计模式[2]:结构型设计模式

(1) 模式简介适配器模式是一种结构型设计模式,用于将一个类的接口转换成期望的另一个接口,解决接口不兼容的问题,使原本无法协同工作的类能够一起工作。它常用于已有稳定模块与新模块功能相近但接口不同的场景,但仅适用于功能相似的类,功能完全不同时无法实现。(2) 使用场景。

正直朱的博客 1042

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

设计模式-结构型模式(7种)

使得子系统更容易使用。

集技术与才华于一体,个人博客网站:nanshuo.icu,公众号:烁烁南光 1906

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

结构型设计模式详解与总结

在软件开发中,设计模式为我们提供了一些解决问题的通用方法,帮助开发人员编写更具扩展性、灵活性和可维护性的代码。设计模式分为三大类:创建型、结构型和行为型。本文将聚焦于**结构型设计模式**,详解它们的概念、适用场景以及具体实现,帮助读者深入理解并在实际项目中运用这些模式。

fudaihb的博客 1437

设计模式 -- 结构型模式

结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。代理模式适配器模式装饰者模式桥接模式外观模式组合模式享元模式由于某些原因需要给某对象提供一个代理对象以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

xiaotiaoza的博客 1064

对结构型设计模式的理解

对结构型设计模式的理解 http://www.iteye.com/topic/39053

ainiyiwannian2046的博客 163

结构型对象设计模式

结构型对象设计模式 2007-05-01 11:02 272人阅读 评论(0) 收藏 举报 结构型对象模式采用继承机制来组合接口或实现。它不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。因为可以在运行时刻改变对象组合关系,所以对象组合具有更大

junecau的专栏 1027

结构型设计模式(上)

分类 结构型设计模式可以分为两种模式: 一、结构型类模式 二、结构型对象模式 结构型设计模式 结构型设计模式着重的是如何组合类和对象以获得更大的结构,该模式有助于多个独立开发的类库协同工作。 (1)结构型类模式:该模式采用继承机制来组合接口或实现。一个简单的例子,采用多重继承方法将两个以上的类组合成一个类,结构这个类包含了所有父类的性质。 (2)结构型对象模式:该模式不是对接口和实现进行...

杨光 320

前端设计模式之结构型模式

结构型模式概述 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式可以分为类结构型模式和对象结构型模式: 类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。 对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中...

祖国的小花园 252
上一篇: 创建型设计模式
下一篇: 因磁盘空间不足导致线上问题的解决办法
香草味小布丁
博客等级 码龄10年 461粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值