适配器模式和装饰器模式都可以在原类文件方法的基础上修改、增强,但侧重点不一样,
适配器模式重在将一个接口转换为另一个接口
装饰器模式侧重对原类文件方法的增强,但接口还是同一个接口

适配器模式:

适配器模式:解决原类文件(适配者)和现有需求(目标)相似但不能直接使用的情况。
通过加一层适配器,对现有接口进行增强,用户在使用适配器时无需知道适配器内部的工作细节,
所以适配器类内部可以直接组合现有接口(也就是适配者),
适配者的在适配器中的调用对于用户是无感的,用户只需要关心适配器即可

装饰器模式:

装饰器模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能,通过创建一个包装对象,也就是装饰来包裹真实的对象。
因为装饰器只是增强了原类文件的功能,所以装饰器类和原类文件的接口应该是一样的,在装饰器模式中采用了接口来规范二者的方法,保证方法的一致性【在适配器模式中不需要保证适配器和适配者接口一致】
用户在使用原类文件时可以有选择的对此类进行装饰(即装饰和不装饰),所以用户对原类文件的存在是有感知的,使用聚合的方式传入要装饰的原类对象。
当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。

适配器模式和装饰器模式区别相关推荐

  1. 关于适配器模式、装饰器模式、桥接模式和代理模式的总结

    这4个设计模式有很多的相同点,比较容易混.在这里写一篇笔记总结下. 回顾下4个模式: 适配器模式:https://blog.csdn.net/qq_35976351/article/details/9 ...

  2. 装饰器模式与代理模式的区别_JS设计模式(三):装饰器模式、代理模式

    Do more 做的更多,比你上级给你安排的任务! 前言 在<不止代码>中提到了几个程序员典型的思维误区: 「 拜大牛为师 」「 业务代码一样很牛逼 」「 上班太忙没时间学习 」 我之前也 ...

  3. Java —— Decorator 装饰器模式

    文章目录 Java -- Decorator 装饰器模式 简介 用处 简单例子 结构 代码 涉及角色 相关的设计模式 应用实例 优点 缺点 使用场景 注意事项 代码 Java -- Decorator ...

  4. 适配器模式、代理模式、装饰器模式使用场景区别

    适配器模式 适配器模式是提供和原先接口不一样的接口,做一个二次转换,原来的接口还是可以继续使用的. 代理模式 原先的接口是不能访问的(无权使用),只能通过代理来去访问原先接口.代理过程中可能会对原有接 ...

  5. 装饰器模式和适配器模式

    装饰器模式 装饰器模式(Decorator )允许向一个现有的对象添加新的增强功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 一般的,我们为了扩展一个类经常使 ...

  6. 装饰器模式和代理模式的区别

    转载自 装饰器模式和代理模式的区别 学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是找了很多资料,想弄清 ...

  7. 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适 ...

  8. 从一碗小米粥谈装饰器模式,代理模式的区别

    代理与装饰器 场景描述 代理即代替意思,可替代原类的所有功能,即和原类实现相同的规范.代理模式和装饰器模式很像. 每天清晨起来,紧张的洗漱之后,来到楼下的早餐店,我通常都会要一碗小米粥,这时候盛粥的大 ...

  9. 【设计模式系列】5.装饰器模式和适配器模式

    目录 一.装饰器模式 二.适配器模式 1.类适配器 2.对象适配器 3.适配器模式的优缺点 一.装饰器模式 特点: 在不改变一个对象本身功能的基础上给对象增加新的功能,即功能增强: 如Java IO中 ...

最新文章

  1. Java必会的工具库,让你的代码量减少90%
  2. 项目实战-自动生成文档工具
  3. 规划搜索产品时,我们可以如何着手?
  4. P3698-[CQOI2017]小Q的棋盘【树形dp】
  5. js获取数组中最大和最小值
  6. Please read Security section of the manual to find out how to run mysqld as root!错误解决
  7. 网络压缩《网络压缩论文整理》
  8. hdu 1300(dp)
  9. 直接访问WEB-INF目录下的JSP页面的方法
  10. 第05课 Linux命令初探(一)
  11. 【网络】HTTP 协议中 URI 和 URL 有什么区别?
  12. come的喂abc是什么梗
  13. python 爬虫3 新浪微博 爬虫 实战
  14. 调整HTML5画布中图像的大小
  15. css第四课:id选择器及通配选择器
  16. java 异常恢复_Java学习之异常处理
  17. mysql57配置教程
  18. 20行Python小程序批量删除GitHub仓库,包
  19. 为什么要做网站备案?
  20. oracle sql语句中like %参数%的用法

热门文章

  1. 17python_函数进阶
  2. 去哪寻找创业合作伙伴
  3. Eclipse各种小图标的含义
  4. 上班族有什么靠谱的兼职副业可以做?
  5. jvm虚拟机的垃圾收集器Parelle Scavenge
  6. uni-app 哥来喽
  7. java jsqlparse,JSqlParser使用
  8. 火山视频signature
  9. MySQL之关联关系
  10. linux下删除木目录的方法,rmdir/rm删除目录的区别