【Java IO】设计模式 (装饰者模式)

Java I/O 使用了装饰者模式来实现。

装饰者模式

请参考装饰者模式详解

装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。

在这里插入图片描述

IO 装饰者模式

以 InputStream 为例

  • InputStream 是抽象组件。
  • FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作。
  • FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。

在这里插入图片描述
实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。

FileInputStream fileInputStream = new FileInputStream(filePath);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

DataInputStream 装饰者提供了对更多数据类型进行输入的操作,比如 int、double 等基本类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/341809.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel数据检索省力小工具(文末附源码)

Excel数据检索省力小工具(文末附源码) 引言 ​ 相信很多人都是用过VLOOKUP函数来检索和处理Excel数据。比如教师查看班级学生成绩表,想单独检索某个科目、某个学生,某一分数段(80~90分数段内的成绩)&…

网络安全基础概念

目录 网络安全背景 网络空间安全 --- Cyberspace 常见的网络安全术语 协议栈自身的脆弱性: 常见安全风险: 物理层--物理攻击 物理设备窃听: 链路层-- MAC洪泛攻击: 链路层--ARP欺骗 网络层--ICMP攻击 传输层--TCP SYN Flood攻击: …

信息检索与数据挖掘 | (八)语言建模的IR

文章目录 📚语言生成模型📚平滑🐇线性插值平滑方法(Lelinek-Mercer)🐇dirichlet 平滑🐇Vector space(向量空间) vs BM25 vs LM 📚语言生成模型 传统的语言生成模型可以用于识别或生成…

南京观海微电子---时序分析基本概念(二)——保持时间

1. 概念的理解 以上升沿锁存为例,保持时间(Th)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如下图所示,一个数据要在上升沿被锁存,那么这个数据需要在时钟上升沿到来后的保持时间内保持稳定…

展会日记:ICCAD2023,Samtec连接器无处不在

【序言】 “作为重要的电子元器件,连接器在如今的数字与现实世界中,扮演了不可或缺的角色。Samtec作为全球知名的连接器厂商,在芯片到板、板到板、射频、光模块等领域都有着卓越表现~ 今年,我们更是将这种存在感在2023 ICCAD上&a…

Nginx 基础使用

目录结构 进入Nginx的主目录我们可以看到这些文件夹 client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件 client_body_temp fastcgi_temp proxy_temp scg…

uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题(高德地图)

踩坑uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题_uniapp真机调试高德地图正常 打包apk高德地图就不加载-CSDN博客 问题: 目前两个项目,一个项目是从另一个项目里面分割出来的一整套…

华为云磁盘性能指标(参考)

MD[华为云磁盘性能指标(参考)] 云硬盘(Elastic Volume Service, EVS) 根据性能,磁盘可分为极速型SSD V2、极速型SSD、通用型SSD V2、超高IO、通用型SSD、高IO、普通IO。 性能指标(参考),测速说明:操作系统-windows …

共襄Agent智能体盛举,实在智能2024生态伙伴大会杭州站圆满收官!

1月19日,以“实在Agent智能体”为主题的「2024实在智能生态伙伴大会(杭州站)」在杭州人工智能小镇隆重启幕! 中国电信/联通/中海油等数十家央企子公司领导代表、天翼数科/华为/浪潮/统信/贝锐/vivo集团/新华三/中软国际/中投创展/…

华为AC+FIT AP组网配置

AC配置 vlan batch 100 to 101dhcp enableip pool apgateway-list 192.168.100.254 network 192.168.100.0 mask 255.255.255.0 interface Vlanif100ip address 192.168.100.254 255.255.255.0dhcp select globalinterface GigabitEthernet0/0/1port link-type trunkport trun…

Flutter 自定义AppBar实现滚动渐变

1、使用ListView实现上下滚动。 2、使用Stack:允许将其子部件放在彼此的顶部,第一个子部件将放置在底部。所以AppBar,写在ListView下面。 3、MediaQuery.removePadding:当使用ListView的时候发现,顶部有块默认的Padd…

【蓝桥杯冲冲冲】排队接水--贪心算法巩固 (≧∇≦)

蓝桥杯备赛 | 洛谷做题打卡day15 文章目录 蓝桥杯备赛 | 洛谷做题打卡day15排队接水题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 题解代码我的一些话 排队接水 题目描述 有 n n n 个人在一个水龙头前排队接水,假如每个人接水的时间为 T i T_…

使用torch实现RNN

在实验室的项目遇到了困难,弄不明白LSTM的原理。到网上搜索,发现LSTM是RNN的变种,那就从RNN开始学吧。 带隐藏状态的RNN可以用下面两个公式来表示: 可以看出,一个RNN的参数有W_xh,W_hh,b_h&am…

Linux如何将文件或目录打成rpm包? -- fpm打包详解

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

关于大模型学习中遇到的4

来源:网络 相关学习可查看文章:Transformer and Pretrain Language Models3-4​​​​​​​ 什么是MLP? MLP是多层感知器(Multilayer Perceptron)的缩写, 多层感知机(MLP)是一种人工神经网…

Tensorflow2.0笔记 - tensor的合并和分割

主要记录concat,stack,unstack和split相关操作的作用 import tensorflow as tf import numpy as nptf.__version__#concat对某个维度进行连接 #假设下面的tensor0和tensor1分别表示4个班级35名同学的8门成绩和两个班级35个同学8门成绩 tensor0 tf.ones([4,35,8]) tensor1 tf…

基于SpringBoot Vue医院门诊管理系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

[zookeeper] SASL(Simple Authentication and Security Layer) 用户名密码认证配置

使用zookeeper zkCli.sh 连接 zookeeper服务时,默认裸连,晓得ip与端口之后即可连接zookeeper服务,本文使用SASL 用户名密码配置服务端与客户端,在zkCli连接前,服务端配置xxxjaas.conf保存用户名密码,客户端…

【无标题】vue自定义表单验证的时候报错TypeError: callback is not a function

今天遇到一个奇怪的bug 我在使用ant-design-vue组件库自定义表单验证的时候出现的 在ant-design-vue组件库里面定义的自定义校验规则是这样的validator 在网上找了很多资料里面不是说 1.检查自定义函数是否有问题 2.检查校检字段信息 可是我两个都看了并没有问题 但是还是一直…

C# 控制台进度条

最简单 namespace ProcessStu01 {internal class Program{static void Main(string[] args){for (int i 1; i < 100; i){Console.Write("\r{0,3}%",i);Thread.Sleep(50);}}} }第三方库 https://github.com/Mpdreamz/shellprogressbar using ShellProgressBar…