设计模式小结一装饰者模式

news/2024/11/8 20:51:25 标签: 设计模式, 装饰者模式, java

先上结论:

这也是一个Android客户端开发中经常使用到的一个设计模式,最典型的就是OkHttpRetrofit、Glide,Android源代码中你最常见到的Context上下文,也是采用的装饰者模式

废话不多说,开干

简单总结下装饰者模式的定义:

动态地给一个对象添加一些额外的职责,就扩展功能而言,装饰者模式提供了一种比使用子类更加灵活的替代方案。

这个模式跟编程中的继承思想很像,但是他们有显著的区别:

  1. 装饰者模式

    • 通过组合(将对象作为另一个对象的成员变量)的方式,动态地为对象添加额外的功能或行为。
    • 不需要修改原有类的代码,即可在不改变对象接口的情况下,为其添加新的职责。
  2. 继承

    • 通过子类继承父类的方式,扩展父类的功能或行为。
    • 子类可以重写父类的方法,或增加新的方法。
    • 继承是静态的,即在编译时确定子类与父类的关系。

上理论:

一、模式结构

装饰者模式主要包含以下几个角色:

  1. 抽象组件(Component):这是一个抽象接口或抽象类,它声明了在具体构建中实现的业务方法,并可以引进一个可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象的方法,实现客户端

http://www.niftyadmin.cn/n/5744414.html

相关文章

梧桐数据库与mysql及oracle关于交换服务器编号的SQL写法分析

一、背景说明 移动运营商的数据中心内有大量服务器设备,它们的性能可能受到相邻服务器的影响,需要优化其数据中心内部服务器的布局。 为了找到最优的布局方案,需要评估不同布局对整体系统性能的影响。一种简单的测试方法是模拟交换服务器的…

ffmpeg命令

1. 修改视频的数据速率 ffmpeg.exe -i video.mp4 -r 30 -c:v libx264 -b:v 1500k output.mp42. mp4与h264互相转换 ffmpeg.exe -i a.mp4 -vcodec h264 output.h264 ffmpeg.exe -i output.h264 -vcodec mpeg4 output.mp4

2024MoonBit全球编程创新挑战赛参赛作品“飞翔的小鸟”技术开发指南

本文转载自 CSDN:https://blog.csdn.net/m0_61243965/article/details/143510089作者:言程序plus 实战开发基于moonbit和wasm4的飞翔的小鸟游戏 游戏中,玩家需要通过上下左右按键控制Bird,在不断移动的障碍pipe之间穿梭&#xf…

<网络> 协议

目录 文章目录 一、认识协议 1. 协议概念 2. 结构化数据传输 3. 序列化和反序列化 二、网络计算器 1. 封装socket类 2. 协议定制 request类的序列化和反序列化 response类的序列化和反序列化 报头的添加与去除 Json序列化工具 Jsoncpp 的主要特点: Jsoncpp 的使用方法: 3. Ser…

智启未来,趣享生活 德国卡赫举办系列新品首发活动

全球最大的清洁设备和清洁解决方案提供商德国卡赫,于11月6日在第七届进博会新品发布平台举办主题为“智启未来,趣享生活”的新品发布会,揭开全球首发新品可折叠式手持清洗机KHB Air以及亚洲首发新品商用清洁机器人KIRA CV 50的神秘面纱。作为…

2.操作系统常问面试题1

2.1 Linux 中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数是什么 1、查看进程运行状态的指令: ps aux 列出所有进程的详细信息。 ps aux | grep PID ,查看具体某PID进程状态。 在 Linux 中,可以使用以下指令来查看进…

react动态路由

在React应用中,动态路由(Dynamic Routing)通常指的是根据应用的状态或用户的交互来动态地显示或隐藏路由(页面或组件)。这可以通过多种方法实现,包括使用React Router库,它提供了强大的路由管理…

linux nvidia/cuda安装

1.查看显卡型号 lspci |grep -i vga2.nvidia安装 2.1在线安装 终端输入(当显卡插上之后,系统会有推荐的安装版本) ubuntu-drivers devices可得到如下内容 vendor : NVIDIA Corporation model : TU104GL [Tesla T4] driver : nvid…