装饰器模式 (decorater(包装器模式 Wrapper))

动态的为对象增加一个新的功能
优点:使用对象的关联关系取代继承关系,降低系统的耦合度,避免类型体系的快速膨胀
缺点:会产生很多小对象,大量小对象占用内存,在一定程度上影响性能

组件:
Component:抽象构件,真实对象和装饰对象所相同的接口
ConcreteComponent:具体构件角色
Decorator:装饰角色,持有一个抽象构件的引用
ConcreteDecorator:具体装饰角色,负责给构件对象添加新的“装饰”
实例:IO输入输出流,Swing包界面构件,Servlet中提供request对象HttpServletRequestWrapper
UML:

PS:装饰器模式和桥接模式区别:
桥接模式是对对象自身现有机制沿着多个维度变化,是既有部分不稳定;
装饰器模式是增加新的功能。

外观模式 (Facade)

迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用
将现有接口功能进行组合封装,对外界提供最少的接口

享元模式 FlyWeight

特点:
内存属于稀缺资源,多个完全相同或相似的对象,共同占用内存
以共享的方式高效的支持大量细粒度对象的重用
极大的减少了内存中对象的数量,运行时间变长,以时间换取空间

核心关键 :内部状态:可以共享,不会随环境变化而改变
外部状态:不可共享,会随环境变化而随之改变

组件:
FlyweightFactory:享元工厂类,创建并管理享元对象,一般设计为键值对
FlyWeight:抽象享元类,申明公共方法,可提供内部状态,设置外部状态
ConcreteFlyWeight:具体享元类,
UnsharedConcreteFlyWeight:非共享享元类
example:线程池,数据库连接池,String类的设计
UML:

GOF之结构型模式Ⅱ(重点)相关推荐

  1. GOF之结构型模式Ⅰ(重点)

    适配器模式(adapter: Adaptee+Adapter(实现接口)) 将一个类的接口适配成用户所期待的,适配允许通常因为接口不兼容而不能在一起工作的类工作在一起 类适配器(继承) 对象适配器(组 ...

  2. GOF设计模式之组合设计模式(结构型模式) ✨ 每日积累

    组合模式是什么 组合模式(Composite Pattern),又叫部分整体模式,作为结构型模式,组合模式是用于把一组相似的对象当作一个单一的对象.组合多个对象形成树形结构来表示"整体-部分 ...

  3. 备战面试日记(3.3) - (设计模式.23种设计模式之结构型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.9 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  4. 23种设计模式分析(4):结构型模式

    1.1.9 Composite复合模式 Composite(复合.合成.组合)模式是一种结构型模式,定义:将对象组合成树形结构以表示"部分-整体"的层次结构,它使得客户对单个对象和 ...

  5. 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★

    文章目录 一.七大设计原则 1.开闭原则 2.依赖倒置原则 3.单一职责原则 4.接口隔离原则 5.迪米特原则 6.里氏替换原则 7.合成复用原则 二.创建型模式 0.简单工厂模式 ( 不属于 GOF ...

  6. 七大设计原则与设计模式(创建型模式、结构型模式、行为型模式)

    七大设计原则 开闭原则.依赖倒置原则.单一职责原则.接口隔离原则.迪米特法则(最少知道原则).里氏替换原则.合成 (组合).聚合复用原则 开闭原则 定义: 一个软件实体如类.模块和函数应该对扩展开放, ...

  7. 结构型模式/设计模式

    结构型模式 涉及如何组合类和对象来获得更大的结构. 结构型类模式: 采用继承机制来组合接口或实现,通常是静态的,类继承方式. 结构型对象模式: 描述如何对对象进行组合,从而获得新功能的一些方法. 相关 ...

  8. .NET设计模式(15):结构型模式专题总结

    .NET设计模式(15):结构型模式专题总结 --探索设计模式系列之十五 Terrylee,2006年5月 摘要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模 ...

  9. 设计模式09: Decorator 装饰模式(结构型模式)

    Decorator 装饰模式(结构型模式) 子类复子类,子类何其多 加入我们需要为游戏中开发一种坦克,除了不同型号的坦克外,我们还希望在不同场合中为其增加以下一种多种功能:比如红外线夜视功能,比如水路 ...

最新文章

  1. 基于相机和激光传感器的车顶视觉检测系统
  2. MapReduce流程(WordCount案例实现)
  3. android图片查看器,实现图片加载进度监听,实现保存图片
  4. bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)
  5. python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...
  6. Json Formatter 1.0 Json格式化工具
  7. 李宏毅 Gradient Descent总结
  8. 手机软件APP下载类网站Pbootcms模板 游戏软件应用网站源码 模板自适应手机端
  9. DnsJumper下载
  10. 使用JS动态生成表格
  11. linux运行check1n越狱,checkra1n越狱教程linux
  12. 计算机不能报名系统软件,电脑无法安装税控系统、国税申报软件,怎么回事
  13. 高级会计职称计算机考什么,高级会计师考试要考哪些科目
  14. H77、Z75、Z77主板有什么区别?
  15. 架构漫谈(八):从架构的角度看如何写好代码 + 我的思考
  16. 服装ERP软件首要的好处都有哪些?
  17. 西安腾讯云面试总结(已拿offer)
  18. 机械与计算机大一学的一样吗,机械设计制造及其自动化专业各校大一新生学的课程一样吗...
  19. 变现利器!一文带你学会应用内添加「贴片广告」
  20. Win 7+Word 2007仿宋和楷体不能正常显示的解决方法

热门文章

  1. ElasticSearch面试 - es 写入数据的工作原理是什么啊?
  2. GoLang语言多版本管理工具--GVM入门介绍
  3. 如何在CentOS上设置MariaDB Galera Cluster 10.0
  4. 关于索引我能说的那些事儿
  5. python从零开始基础入门——开发环境搭建
  6. Python使用本地代理 proxy
  7. 【C语言】两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单,a说他不和x比,c说他不和x,z比,编写程序找出三对赛手名单。...
  8. C#设计模式之22-模板方法模式
  9. 如何使用粒子氩气进行位置跟踪
  10. git 初始化git存储库_什么不保存到Git存储库中