黑马程序员_日记(一)_java基础_装饰设计模式思想
来源:互联网 发布:电脑网络连接不上651 编辑:程序博客网 时间:2024/05/13 15:41
<pre name="code" class="html">------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
今天看了黑马黑马基础毕老师的IO,其中的装饰设计模式让我印象很深刻,所以就写一下自己的理解,加深一下对它的认识。装饰设计模式,无非就是在原有已存在的方法的基础上来增强它的功能,比如说read方法和readline方法,把一个一个的读改为一行一行的读。装饰设计模式跟继承是不一样的,装饰设计模式可以使复杂的东西简单化,装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。继承是对方法的扩展,而装饰设计模式是对方法功能的增强。就像去面试一样,打扮一下西装革履,这就叫装饰。以下是关于io流的装饰设计模式的例子:
/*明白了BUfferedReader类中特有的方法readLine的原理后,可以自定义一个类中包含一个功能和readLine一致的方法来模拟一下BufferedReader*/import java.io.*;class MyBufferedReader { private FileReader r; MyBufferedReader(FileReader r) { this.r=r; } //可以一次读一行的数据方法 public String myReadLine() throws IOException { //定义一个临时容器,原BufferedReader封装的是字符数组 //定义一个StringBuilder容器,因为最终还是要将数据转成字符串 StringBuilder sb=new StringBuilder(); int ch=0; while((ch=r.read())!=-1) { if(ch=='\r') continue; if(ch=='\n') return sb.toString(); else sb.append((char)ch); } if(sb.length()!=0) return sb.toString(); return null; } public void myClose()throws IOException { r.close(); }}class MyBufferedReaderDemo{ public static void main(String[] args) throws IOException { FileReader fr=new FileReader("buf.txt"); MyBufferedReader myBuf=new MyBufferedReader(fr); String line=null; while((line=myBuf.myReadLine())!=null) { System.out.print(line+" "); } myBuf.myClose(); }}
0 0
- 黑马程序员_日记(一)_java基础_装饰设计模式思想
- 黑马程序员_Java基础_装饰设计模式
- 黑马程序员_Java基础[11]_单列设计模式
- 黑马程序员_学习日记_Java基础_多线程
- 黑马程序员_java学习日记_Java高新技术_反射(一)
- 黑马程序员_java入门_设计模式
- 黑马程序员_java语言_设计模式
- 黑马程序员_JAVA基础_网络(一)
- 黑马程序员_装饰设计模式
- 黑马程序员_装饰设计模式
- 黑马程序员_<<装饰设计模式>>
- 黑马程序员_装饰设计模式
- 黑马程序员_装饰设计模式
- 黑马程序员_Java基础_面向对象(一)_05
- 黑马程序员 _ java基础 _ 之装饰者设计模式
- 黑马程序员_学习日记2(java基础 一)
- 黑马程序员_Java第19天知识总结_缓冲区_装饰设计模式_键盘录入_源和目的_Properties
- 黑马程序员_java学习日记_数组
- 2014游泳记录 01
- groovy入门 第02章 数值和表达式
- Centos上sysbench的安装测试
- android教程之MediaPlayer和MediaRecorder
- 整数划分问题
- 黑马程序员_日记(一)_java基础_装饰设计模式思想
- LeetCode-Reorder List
- memcached安装配置
- 分享一个java的UI程序,awt+swing,一个桌球计费系统,按时间计费
- 工业超纯水机:化妆品工业超纯水设备特性概述
- 程序员应该经常逛的网站 .
- DFA算法过滤敏感词,替换为*
- Dragon Balls
- C++ Primer Plus的若干收获--(九)