首页 > 其他分享 >设计模式-----结构型模式

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

时间:2022-12-23 10:37:51浏览次数:36  
标签:组合 对象 适配器 模式 ----- 接口 设计模式 可以 结构型


设计模式结构型包含:适配器模式、桥接模式、组合模式、装饰模式、享元模式、外观模式、代理模式。

关系分类

设计模式-----结构型模式_组合模式

适配器:将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

比如你的电脑只能支持一个type-c接口,但是你需要一个usb接口,这时候一个转换器就可以解决这个问题,这个转换器充当的角色就是适配器。

设计模式-----结构型模式_代理模式_02

 桥接模式:将抽象部分与它的实现部分分离,使他们都可以独立的变化

Abstraction 与Implementor类的聚合就可以看作是桥接的桥了

设计模式-----结构型模式_装饰模式_03

组合模式:将对象组合成树形结构以表示部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

 可以理解为总公司和分公司的关系,具体的抽象类可以就是总公司,抽象类的子类就是分公司。

组合模式的好处:组合模式定了包含基本对象组合对象的的类的层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不段的递归下去,客代码中,任何用到基本的对象的地方都可以使用组合对象。

用户不关心到底是处理一个叶子点还是处理一个组合组件,也就用不着为定义组合而写一些选择判断语句

组合模式让客户可以一致的使用组合结构和单个对象。

设计模式-----结构型模式_代理模式_04

装饰模式:动态的给一个对象添加一些额外道德职责。就增加功能来说,装饰模式相比生成子类更加灵活。

 外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

 享元模式:为运用共享技术有效的支持大量细粒度的对象

如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;还有就是对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

标签:组合,对象,适配器,模式,-----,接口,设计模式,可以,结构型
From: https://blog.51cto.com/u_15902978/5965022

相关文章

  • 设计模式-----创建型模式
    创建型模式隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些的对象所知道的是由抽象接口所定义的接口。这样创建型模式在创建什么、谁创建它、它是怎么被创建的,以......
  • xxl-job使用openfeign,报空指针异常(java.lang.NullPointerException)
    当使用xxl-job调用项目时,如果刚好使用了feign中间件调用微服务接口,会报空指针异常可以在代码前面加一句:RequestContextHolder.setRequestAttributes(newServletReques......
  • 机器学习-企业破产预测
    企业破产预测选题背景企业破产是商品经济的必然产物.在社会主义商品经济条件下,企业破产也是一种客观存在的经济现象.新中国的第一部《企业破产法》已经诞生,它的实施必......
  • vue 中简单的使用css变量 --color
    <divclass="list"><divclass="list-item"draggable="true"style="--color:#e63e31"><spanclass="list-item-title">双鱼座</span></......
  • CloudCanal实战-五分钟搞定Oracle到StarRocks数据迁移与同步
    简述CloudCanal当前最新版本已经支持源端Oracle、SqlServer等主流传统数据库作为源端迁移同步数据到StarRocks来构建实时数仓。本文简要介绍如何快速构建一条Oracle->Star......
  • helm安装kube-prometheus-stack
    helm安装:wgethttps://get.helm.sh/helm-v3.9.2-linux-386.tar.gztar-xzvfhelm-v3.9.2-linux-386.tar.gzmvlinux-386/helm/usr/bin/ helm安装prometheus...helmr......
  • Prometheus监控之process-exporter
    一、简介有些应用程序无法直接检测,要么是因为您无法控制代码,要么是因为它们是用一种不容易用Prometheus检测的语言编写的。我们必须转而求助于挖掘/proc。二、安装配置1......
  • leetcode-11. 盛最多水的容器
    ​​11.盛最多水的容器​​难度中等3977收藏分享切换为英文接收动态反馈给定一个长度为​​n​​的整数数组​​height​​。有​​n​​条垂线,第​​i​​条线的......
  • 解决移动端垂直滚动 使用justify-content显示不全的问题
    一、需求:移动端页面展示一列列表,当数据量少时,不需要滚动且数据居中展示,数量多则自动向两边撑开且出现滚动条。其中,盒子高度是不固定的,根据页面屏幕比例和flex布局自动......
  • 组件间通信-props
    Props功能让组件接收外部传过来的数据传递数据<Demoname="xxx"/>接收数据  1.第一种方式(只接收):props:['name']  2.第二种方式(限制类型):pr......