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-)相关推荐

  1. java之影流之主( 流 )第十五天( ----自动关闭的流--字符缓冲流---Properties--序列化-- )

    1.  JDK1. 7之后, 所有的流都实现了AutoCloseble接口,因此有了自动关闭流的心特性; 作业练习:使用Map集合;以及String 的split方法 "Success is ...

  2. java之影流之主( 流 )第十四天( -------- IO流------ )

    1 IO流的体系分类 2.常用的流Java流列表 例题: 1. 字节输出流  FileOutputStream : 写文件的步奏; 1. 创建绑定文件, 2. 创建输出流 3. 写文件 . 4. 关闭 ...

  3. (十)装饰器模式详解(与IO不解的情缘)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处. LZ到目前已经写了九个设计模式,回过去看看,貌似写的有点凌乱,LZ后面会尽量改进. 那么本章LZ和各位读友讨论一个与JAVA中IO有着 ...

  4. 设计模式笔记十:装饰器模式

    原文:http://www.runoob.com/design-pattern/ (大部分摘抄) 少许个人理解,如有错误请指出.欢迎一起讨论. 装饰器模式(Decorator Pattern) 允许向 ...

  5. decorator java_java_详解java装饰模式(Decorator Pattern),一、装饰器模式(Decorator Patter - phpStudy...

    详解java装饰模式(Decorator Pattern) 一.装饰器模式(Decorator Pattern) 允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式 ...

  6. 【JAVA长虹键法】第十一式 装饰器模式(23种设计模式)

  7. 常用设计模式系列(十)—装饰者模式

    第一节 前言 各位好,首先我要先恭喜下自己粉丝即将破百,也谢谢各位的捧场,不过也跟我自己的努力密不可分,我也要继续加油,输出更好的文章来回报大家,也希望大家多提建议,有问题我也会及时改进.争取早日跟上 ...

  8. Java 文件下载/上传限流算法

    文章目录 一.算法思路 二.限流的完整java代码实现 三.注意点 四.具体demo的github地址 在做文件下载功能时,为了避免下载功能将服务器的带宽打满,从而影响服务器的其他服务.我们可以设计一 ...

  9. 装饰器模式与java.io包

    为什么80%的码农都做不了架构师?>>>    Decorator设计模式是典型的结构型模式(在GOF的那本模式的Bible中将模式分为:1.创建型模式:2.结构型模式:3.行为模式 ...

最新文章

  1. java 常用正则表达式
  2. 我的Android进阶之旅------gt;Android中通过adb shell input来模拟滑动、按键、点击事件...
  3. c语言1余3,c语言1—3真题(含答案).ppt
  4. fastReport 随记
  5. python 参数
  6. SparkSQL介绍
  7. 有用户访问我的计算机,事件查看器有个奇怪用户账号登录HOME-W81$,我的电脑没有这个用户账号,本机是win8.1ʌ - Microsoft Community...
  8. axios与ajax对比,vue体系中axios请求对比jquery-ajax请求
  9. iPad不完美?盖茨的酸葡萄心理
  10. Linux环境安装配置Swftools
  11. Python基础——模块的安装
  12. Aria2 基础配置及下载设置
  13. Linux设备驱动模型-Kobject
  14. java web jsp页面,jsp引入页面 Java Web JSP详解(下)
  15. 刷脸支付将替代传统的聚合收款二维码
  16. python绘制单线图_教你快速利用CAD绘制管道单线图.pdf
  17. 解决redhat vmware安装后鼠标不能使用问题
  18. 多个excel工作簿合并_EXCEL多表、多工作簿合并拆分,随心所欲(完善版)
  19. CS5460基本读写程序(无bug版本)
  20. Python显示其他字体(韩语),通过安装字体来实现

热门文章

  1. 有钱有流量扶持!小程序开发者,速来报道!
  2. 顾家北雅思写作笔记_Task2
  3. ETH2.0升级后PoS质押给以太坊带来什么影响?
  4. oracle net服务器配置,Oracle配置本地Net服务名
  5. 多窗口模式(multi-window mode)
  6. Chrome浏览器下载任何东西都提示 - [ 失败,下载错误 ] -已完美解决
  7. 为什么u盘不显示数据?u盘不显示数据恢复的3种方法
  8. chico lachowski_新年大盘点:那些冷门却养眼的时尚男神
  9. 女孩子:现代的“三从四德”
  10. IOS项目发布时如何填写Itunes Connect的app信息