GOF之结构型模式Ⅱ(重点)
装饰器模式 (decorater(包装器模式 Wrapper))
动态的为对象增加一个新的功能
优点:使用对象的关联关系取代继承关系,降低系统的耦合度,避免类型体系的快速膨胀
缺点:会产生很多小对象,大量小对象占用内存,在一定程度上影响性能
组件:
Component:抽象构件,真实对象和装饰对象所相同的接口
ConcreteComponent:具体构件角色
Decorator:装饰角色,持有一个抽象构件的引用
ConcreteDecorator:具体装饰角色,负责给构件对象添加新的“装饰”
实例:IO输入输出流,Swing包界面构件,Servlet中提供request对象HttpServletRequestWrapper
UML:
PS:装饰器模式和桥接模式区别:
桥接模式是对对象自身现有机制沿着多个维度变化,是既有部分不稳定;
装饰器模式是增加新的功能。
外观模式 (Facade)
迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用
将现有接口功能进行组合封装,对外界提供最少的接口
享元模式 FlyWeight
特点:
内存属于稀缺资源,多个完全相同或相似的对象,共同占用内存
以共享的方式高效的支持大量细粒度对象的重用
极大的减少了内存中对象的数量,运行时间变长,以时间换取空间
核心关键 :内部状态:可以共享,不会随环境变化而改变
外部状态:不可共享,会随环境变化而随之改变
组件:
FlyweightFactory:享元工厂类,创建并管理享元对象,一般设计为键值对
FlyWeight:抽象享元类,申明公共方法,可提供内部状态,设置外部状态
ConcreteFlyWeight:具体享元类,
UnsharedConcreteFlyWeight:非共享享元类
example:线程池,数据库连接池,String类的设计
UML:
GOF之结构型模式Ⅱ(重点)相关推荐
- GOF之结构型模式Ⅰ(重点)
适配器模式(adapter: Adaptee+Adapter(实现接口)) 将一个类的接口适配成用户所期待的,适配允许通常因为接口不兼容而不能在一起工作的类工作在一起 类适配器(继承) 对象适配器(组 ...
- GOF设计模式之组合设计模式(结构型模式) ✨ 每日积累
组合模式是什么 组合模式(Composite Pattern),又叫部分整体模式,作为结构型模式,组合模式是用于把一组相似的对象当作一个单一的对象.组合多个对象形成树形结构来表示"整体-部分 ...
- 备战面试日记(3.3) - (设计模式.23种设计模式之结构型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.9 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...
- 23种设计模式分析(4):结构型模式
1.1.9 Composite复合模式 Composite(复合.合成.组合)模式是一种结构型模式,定义:将对象组合成树形结构以表示"部分-整体"的层次结构,它使得客户对单个对象和 ...
- 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★
文章目录 一.七大设计原则 1.开闭原则 2.依赖倒置原则 3.单一职责原则 4.接口隔离原则 5.迪米特原则 6.里氏替换原则 7.合成复用原则 二.创建型模式 0.简单工厂模式 ( 不属于 GOF ...
- 七大设计原则与设计模式(创建型模式、结构型模式、行为型模式)
七大设计原则 开闭原则.依赖倒置原则.单一职责原则.接口隔离原则.迪米特法则(最少知道原则).里氏替换原则.合成 (组合).聚合复用原则 开闭原则 定义: 一个软件实体如类.模块和函数应该对扩展开放, ...
- 结构型模式/设计模式
结构型模式 涉及如何组合类和对象来获得更大的结构. 结构型类模式: 采用继承机制来组合接口或实现,通常是静态的,类继承方式. 结构型对象模式: 描述如何对对象进行组合,从而获得新功能的一些方法. 相关 ...
- .NET设计模式(15):结构型模式专题总结
.NET设计模式(15):结构型模式专题总结 --探索设计模式系列之十五 Terrylee,2006年5月 摘要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模 ...
- 设计模式09: Decorator 装饰模式(结构型模式)
Decorator 装饰模式(结构型模式) 子类复子类,子类何其多 加入我们需要为游戏中开发一种坦克,除了不同型号的坦克外,我们还希望在不同场合中为其增加以下一种多种功能:比如红外线夜视功能,比如水路 ...
最新文章
- 基于相机和激光传感器的车顶视觉检测系统
- MapReduce流程(WordCount案例实现)
- android图片查看器,实现图片加载进度监听,实现保存图片
- bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)
- python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...
- Json Formatter 1.0 Json格式化工具
- 李宏毅 Gradient Descent总结
- 手机软件APP下载类网站Pbootcms模板 游戏软件应用网站源码 模板自适应手机端
- DnsJumper下载
- 使用JS动态生成表格
- linux运行check1n越狱,checkra1n越狱教程linux
- 计算机不能报名系统软件,电脑无法安装税控系统、国税申报软件,怎么回事
- 高级会计职称计算机考什么,高级会计师考试要考哪些科目
- H77、Z75、Z77主板有什么区别?
- 架构漫谈(八):从架构的角度看如何写好代码 + 我的思考
- 服装ERP软件首要的好处都有哪些?
- 西安腾讯云面试总结(已拿offer)
- 机械与计算机大一学的一样吗,机械设计制造及其自动化专业各校大一新生学的课程一样吗...
- 变现利器!一文带你学会应用内添加「贴片广告」
- Win 7+Word 2007仿宋和楷体不能正常显示的解决方法
热门文章
- ElasticSearch面试 - es 写入数据的工作原理是什么啊?
- GoLang语言多版本管理工具--GVM入门介绍
- 如何在CentOS上设置MariaDB Galera Cluster 10.0
- 关于索引我能说的那些事儿
- python从零开始基础入门——开发环境搭建
- Python使用本地代理 proxy
- 【C语言】两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单,a说他不和x比,c说他不和x,z比,编写程序找出三对赛手名单。...
- C#设计模式之22-模板方法模式
- 如何使用粒子氩气进行位置跟踪
- git 初始化git存储库_什么不保存到Git存储库中