java之影流之主( 流 )第十六天( --装饰者模式--LineNumberReader-)
1. 装饰者模式
为什么要实现装饰者模式?
动态的责任附加到对象上,若要拓展功能,装饰者提供了比继承更有弹性的替代方案;
装饰者和被装饰者之间必须是一样的类型,也就是拥有共同的超类,在这里应用继承并不是实现方法的复制,而是实现类型
的匹配. 因为装饰者和被装饰者,是同一个类型,因此装饰者可以取代被装饰者, 这样使被装饰者拥有装饰者独有的行为.
根据这个理念,我们可以在任何时候,实现新的装饰者增加新的行为.如果是继承,每当增加新的行为时候,就要修改原程序了
好处: 使用了装饰者模式之后,仅仅需要实现数个装饰者,然后根据需要自行组合就行了,结构清晰明了
非常适合拓展性很强的功能,
例如: Java的输入输出流, 使用了装饰者优于继承
装饰者模式的组成:
被装饰类---------Compoent类||原始接口|| 目标实现类,
比如java中 : 1:InputStream,接口及其直接子类: FileInputStream, ByteArrayInputStream,String|BufferInStream
2: OutputStream接口及其直接子类 : ByteArrayOutputStream、FileOutputStream
装饰者类----- InputStream的直接子类FilerInputStream类及其所有子类;
OutputStream的直接子类FilterOutStream类及其所有子类;
特点:
装饰者拥有被装饰者的对象, 一般当成构造参数传入;
在装饰者类中调用被装饰者的方法,封装成新的功能的方法;
2. LineNumberReader
LineNumberReader是BufferedReader的子类,可以使用readline()的方法读一行;
用String接收; 当String == null,时候读完文件;
3. 打印流 : 核心功能: 可以原样输出到目的端;
PrintStream 字节打印流
构造方法: 文件 字节输出流 路径
PrintWrite
构造方法: 文件 字节输出流 路径 字符输出流;
1. 练习从控制台输入从控制台接收;模拟scanner的方法;
//输入quit停止输入;
//利用System.in从控制台接收, 首先创建流对象;
java之影流之主( 流 )第十六天( --装饰者模式--LineNumberReader-)相关推荐
- java之影流之主( 流 )第十五天( ----自动关闭的流--字符缓冲流---Properties--序列化-- )
1. JDK1. 7之后, 所有的流都实现了AutoCloseble接口,因此有了自动关闭流的心特性; 作业练习:使用Map集合;以及String 的split方法 "Success is ...
- java之影流之主( 流 )第十四天( -------- IO流------ )
1 IO流的体系分类 2.常用的流Java流列表 例题: 1. 字节输出流 FileOutputStream : 写文件的步奏; 1. 创建绑定文件, 2. 创建输出流 3. 写文件 . 4. 关闭 ...
- (十)装饰器模式详解(与IO不解的情缘)
作者:zuoxiaolong8810(左潇龙),转载请注明出处. LZ到目前已经写了九个设计模式,回过去看看,貌似写的有点凌乱,LZ后面会尽量改进. 那么本章LZ和各位读友讨论一个与JAVA中IO有着 ...
- 设计模式笔记十:装饰器模式
原文:http://www.runoob.com/design-pattern/ (大部分摘抄) 少许个人理解,如有错误请指出.欢迎一起讨论. 装饰器模式(Decorator Pattern) 允许向 ...
- decorator java_java_详解java装饰模式(Decorator Pattern),一、装饰器模式(Decorator Patter - phpStudy...
详解java装饰模式(Decorator Pattern) 一.装饰器模式(Decorator Pattern) 允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式 ...
- 【JAVA长虹键法】第十一式 装饰器模式(23种设计模式)
- 常用设计模式系列(十)—装饰者模式
第一节 前言 各位好,首先我要先恭喜下自己粉丝即将破百,也谢谢各位的捧场,不过也跟我自己的努力密不可分,我也要继续加油,输出更好的文章来回报大家,也希望大家多提建议,有问题我也会及时改进.争取早日跟上 ...
- Java 文件下载/上传限流算法
文章目录 一.算法思路 二.限流的完整java代码实现 三.注意点 四.具体demo的github地址 在做文件下载功能时,为了避免下载功能将服务器的带宽打满,从而影响服务器的其他服务.我们可以设计一 ...
- 装饰器模式与java.io包
为什么80%的码农都做不了架构师?>>> Decorator设计模式是典型的结构型模式(在GOF的那本模式的Bible中将模式分为:1.创建型模式:2.结构型模式:3.行为模式 ...
最新文章
- java 常用正则表达式
- 我的Android进阶之旅------gt;Android中通过adb shell input来模拟滑动、按键、点击事件...
- c语言1余3,c语言1—3真题(含答案).ppt
- fastReport 随记
- python 参数
- SparkSQL介绍
- 有用户访问我的计算机,事件查看器有个奇怪用户账号登录HOME-W81$,我的电脑没有这个用户账号,本机是win8.1ʌ - Microsoft Community...
- axios与ajax对比,vue体系中axios请求对比jquery-ajax请求
- iPad不完美?盖茨的酸葡萄心理
- Linux环境安装配置Swftools
- Python基础——模块的安装
- Aria2 基础配置及下载设置
- Linux设备驱动模型-Kobject
- java web jsp页面,jsp引入页面 Java Web JSP详解(下)
- 刷脸支付将替代传统的聚合收款二维码
- python绘制单线图_教你快速利用CAD绘制管道单线图.pdf
- 解决redhat vmware安装后鼠标不能使用问题
- 多个excel工作簿合并_EXCEL多表、多工作簿合并拆分,随心所欲(完善版)
- CS5460基本读写程序(无bug版本)
- Python显示其他字体(韩语),通过安装字体来实现
热门文章
- 有钱有流量扶持!小程序开发者,速来报道!
- 顾家北雅思写作笔记_Task2
- ETH2.0升级后PoS质押给以太坊带来什么影响?
- oracle net服务器配置,Oracle配置本地Net服务名
- 多窗口模式(multi-window mode)
- Chrome浏览器下载任何东西都提示 - [ 失败,下载错误 ] -已完美解决
- 为什么u盘不显示数据?u盘不显示数据恢复的3种方法
- chico lachowski_新年大盘点:那些冷门却养眼的时尚男神
- 女孩子:现代的“三从四德”
- IOS项目发布时如何填写Itunes Connect的app信息