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从控制台接收, 首先创建流对象; 

      



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值