适配器模式和装饰器模式区别
适配器模式和装饰器模式都可以在原类文件方法的基础上修改、增强,但侧重点不一样,
适配器模式重在将一个接口转换为另一个接口
装饰器模式侧重对原类文件方法的增强,但接口还是同一个接口
适配器模式:
适配器模式:解决原类文件(适配者)和现有需求(目标)相似但不能直接使用的情况。
通过加一层适配器,对现有接口进行增强,用户在使用适配器时无需知道适配器内部的工作细节,
所以适配器类内部可以直接组合现有接口(也就是适配者),
适配者的在适配器中的调用对于用户是无感的,用户只需要关心适配器即可
装饰器模式:
装饰器模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能,通过创建一个包装对象,也就是装饰来包裹真实的对象。
因为装饰器只是增强了原类文件的功能,所以装饰器类和原类文件的接口应该是一样的,在装饰器模式中采用了接口来规范二者的方法,保证方法的一致性【在适配器模式中不需要保证适配器和适配者接口一致】
用户在使用原类文件时可以有选择的对此类进行装饰(即装饰和不装饰),所以用户对原类文件的存在是有感知的,使用聚合的方式传入要装饰的原类对象。
当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
适配器模式和装饰器模式区别相关推荐
- 关于适配器模式、装饰器模式、桥接模式和代理模式的总结
这4个设计模式有很多的相同点,比较容易混.在这里写一篇笔记总结下. 回顾下4个模式: 适配器模式:https://blog.csdn.net/qq_35976351/article/details/9 ...
- 装饰器模式与代理模式的区别_JS设计模式(三):装饰器模式、代理模式
Do more 做的更多,比你上级给你安排的任务! 前言 在<不止代码>中提到了几个程序员典型的思维误区: 「 拜大牛为师 」「 业务代码一样很牛逼 」「 上班太忙没时间学习 」 我之前也 ...
- Java —— Decorator 装饰器模式
文章目录 Java -- Decorator 装饰器模式 简介 用处 简单例子 结构 代码 涉及角色 相关的设计模式 应用实例 优点 缺点 使用场景 注意事项 代码 Java -- Decorator ...
- 适配器模式、代理模式、装饰器模式使用场景区别
适配器模式 适配器模式是提供和原先接口不一样的接口,做一个二次转换,原来的接口还是可以继续使用的. 代理模式 原先的接口是不能访问的(无权使用),只能通过代理来去访问原先接口.代理过程中可能会对原有接 ...
- 装饰器模式和适配器模式
装饰器模式 装饰器模式(Decorator )允许向一个现有的对象添加新的增强功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 一般的,我们为了扩展一个类经常使 ...
- 装饰器模式和代理模式的区别
转载自 装饰器模式和代理模式的区别 学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是找了很多资料,想弄清 ...
- java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍
目录 1装饰器模式 1.1定义 1.2代码实现 1.3装饰器特点 1.4装饰器在IO流中的使用 2配适器模式 2.1Adapter适配器 2.2代码实例 2.3适配器特点 2.4适配器优缺点 2.5适 ...
- 从一碗小米粥谈装饰器模式,代理模式的区别
代理与装饰器 场景描述 代理即代替意思,可替代原类的所有功能,即和原类实现相同的规范.代理模式和装饰器模式很像. 每天清晨起来,紧张的洗漱之后,来到楼下的早餐店,我通常都会要一碗小米粥,这时候盛粥的大 ...
- 【设计模式系列】5.装饰器模式和适配器模式
目录 一.装饰器模式 二.适配器模式 1.类适配器 2.对象适配器 3.适配器模式的优缺点 一.装饰器模式 特点: 在不改变一个对象本身功能的基础上给对象增加新的功能,即功能增强: 如Java IO中 ...
最新文章
- Java必会的工具库,让你的代码量减少90%
- 项目实战-自动生成文档工具
- 规划搜索产品时,我们可以如何着手?
- P3698-[CQOI2017]小Q的棋盘【树形dp】
- js获取数组中最大和最小值
- Please read Security section of the manual to find out how to run mysqld as root!错误解决
- 网络压缩《网络压缩论文整理》
- hdu 1300(dp)
- 直接访问WEB-INF目录下的JSP页面的方法
- 第05课 Linux命令初探(一)
- 【网络】HTTP 协议中 URI 和 URL 有什么区别?
- come的喂abc是什么梗
- python 爬虫3 新浪微博 爬虫 实战
- 调整HTML5画布中图像的大小
- css第四课:id选择器及通配选择器
- java 异常恢复_Java学习之异常处理
- mysql57配置教程
- 20行Python小程序批量删除GitHub仓库,包
- 为什么要做网站备案?
- oracle sql语句中like %参数%的用法