A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 xiangzi2008006 于 2013-8-30 22:09 编辑

BufferedReader的readLine方法属于装饰设计模式吗? 可是类名和Reader接口的read不一样?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

3 个回复

倒序浏览

BufferedReader属于Reader的装饰类,它构造时需要传进reader流进来,然后对其中的方法进行改进,readLine()方法当然属于新增改进方法,其内部调用的还是reader中的read()方法!
回复 使用道具 举报
328078121 发表于 2013-8-29 07:28
BufferedReader属于Reader的装饰类,它构造时需要传进reader流进来,然后对其中的方法进行改进,readLine( ...

可是名字不一样,是不是没要求
回复 使用道具 举报
装饰类的概念:
当我们想把某个对象功能增强,而自定义一个类,通过构造函数把目标对象传入到自己类中,从而增强其功能,这样的设计模式我们称之为装饰设计模式。
BufferedReader br = new BufferedReader(new FileRead("123.txt"));
是不是把FileRead通过BufferedReader的构造函数传入到了BufferedReader对象中?
read()方法是不是FileRead的方法?
BufferedReader中的readLine是不是把read()方法加强了?

所以毫无疑问
BufferedReader的readLine方法属于装饰设计模式。
在毕老师的视频里面也有写MyReadLine()方法的那一章详细介绍了
  1. import java.io.*;

  2. class BufferedDemo

  3. {

  4.     public static void main(String[] args)

  5.     {

  6.         BufferedReader br =null;

  7.         BufferedWriter bw =null;

  8.         try

  9.         {

  10.             bw = new BufferedWriter(new FileWriter("d:\\b.txt"));  

  11.             br = new BufferedReader(new InputStreamReader(System.in));

  12.             String line = null;

  13.             int a=1;

  14.             while((line = br.readLine())!=null)

  15.             {

  16.                 if("over".equals(line))  

  17.                    break;

  18.                 bw.write(a+"):"+line);

  19.                 bw.newLine();

  20.                 bw.flush();

  21.                 a++;

  22.             }

  23.         }

  24.         catch (IOException e)

  25.         {

  26.             throw new RuntimeException("读写文件失败");

  27.         }

  28.         finally

  29.         {

  30.             try

  31.             {

  32.                 if(br!=null)

  33.                     br.close();

  34.             }

  35.             catch (IOException e)

  36.             {

  37.                 throw new RuntimeException("读写流资源失败");

  38.             }

  39.             

  40.             try

  41.             {

  42.                 if(bw!=null)

  43.                     bw.close();

  44.             }

  45.             catch (IOException e)

  46.             {

  47.                 throw new RuntimeException("读写流资源失败");

  48.             }

  49.         }

  50.     }

  51. }
复制代码
readLine方法底层也是调用的read()方法。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马