黑马程序员 —— 装饰设计模式
2014-12-19 10:52
218 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
1、简述
装饰模式(decoratr) 又名包装(Wrapper)模式,它是对已有对象的功能进行加强时定义的一个类,将已有对象传入,使其功能加强。是继承关系的一个替代方案。
2、装饰和继承的区别:
A 、装饰模式是一种动态行为,对已经存在类进行随意组合,而类的继承是一种静态的行为,一个类定义成什么样的,该类的对象便具有什么样的功能,无法动态的改变。因此,装饰模式比继承灵活,降低了类与类之间的关系。
B、装饰模式扩展的是对象的功能,不需要增加类的数量,所以装饰类和被装饰的类通常都是属于一个体系。而类继承扩展是类的功能,在继承的关系中,如果我们想增加一个对象的功能,我们只能通过继承关系,在子类中增加两个方法。
示例:
1、简述
装饰模式(decoratr) 又名包装(Wrapper)模式,它是对已有对象的功能进行加强时定义的一个类,将已有对象传入,使其功能加强。是继承关系的一个替代方案。
2、装饰和继承的区别:
A 、装饰模式是一种动态行为,对已经存在类进行随意组合,而类的继承是一种静态的行为,一个类定义成什么样的,该类的对象便具有什么样的功能,无法动态的改变。因此,装饰模式比继承灵活,降低了类与类之间的关系。
B、装饰模式扩展的是对象的功能,不需要增加类的数量,所以装饰类和被装饰的类通常都是属于一个体系。而类继承扩展是类的功能,在继承的关系中,如果我们想增加一个对象的功能,我们只能通过继承关系,在子类中增加两个方法。
示例:
import java.io.FileReader; import java.io.IOException; import java.io.Reader; /** *自定义一个类来实现和readLine功能一样的方法 * @author Administrator */ public class MyBufferedReader extends Reader { private Reader r; public MyBufferedReader(Reader r) { this.r = r; } //可以一次读取一行数据的方法 public String myReadLine() throws IOException { //定义一个临时容器,原bufferedreader封装的是字符数组 //定义一个StringBuilder容器,因为最终还是要将数据变成字符串。 StringBuilder sb = new StringBuilder(); int ch = 0; while (-1 !=(ch = r.read())) { if (ch =='\r') //是\r就不存入缓冲区中,继续。 continue; if (ch =='\n') return sb.toString(); else sb.append((char)ch); //存入缓冲区 } //等于0 表示缓冲区中右数据 if (sb.length() !=0) { return sb.toString(); } return null; } /* * 覆盖Reader类中的抽象方法 */ public int read(char[] chuf,int off,int len) throws IOException { return r.read(chuf,off,len); } public void close() throws IOException { r.close(); } // 覆盖Reader类中的抽象方法 //关闭程序 public void myClose() throws IOException { r.close(); } } class MyBufferedReaderTest { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("C:\\buf.txt"); MyBufferedReader myBuf = new MyBufferedReader(fr); String line = null; while (null != (line = myBuf.myReadLine())) { System.out.println(line); } myBuf.myClose(); } }
相关文章推荐
- 黑马程序员——装饰类设计模式简介
- 黑马程序员 java学习笔记3-IO流之字节流与装饰设计模式
- 黑马程序员_IO流——装饰设计模式
- 黑马程序员_基础_IO流学习笔记_文本文件读取及复制、字符流的缓冲区和装饰设计模式
- 黑马程序员_ 三种设计模式:单例、模板、装饰
- 黑马程序员_IO流输入输出-装饰设计模式
- 黑马程序员_04_装饰设计模式
- 黑马程序员 io中的缓冲字符流,装饰设计模式(毕向东)
- 黑马程序员-JAVA学习之装饰设计模式与自定义BufferedReader
- 黑马程序员—— 装饰设计模式
- 黑马程序员 设计模式总结(单例设计、装饰设计模式)
- 黑马程序员——IO流-字符流&装饰设计模式
- 黑马程序员------装饰设计模式
- 黑马程序员:装饰设计模式介绍及装饰模式与继承关系的区别
- 黑马程序员-JAVA高级视频_IO输入与输出-19天-5(装饰设计模式)
- 黑马程序员-JAVA基础-IO流中的装饰设计模式
- 黑马程序员_Java第19天知识总结_缓冲区_装饰设计模式_键盘录入_源和目的_Properties
- 黑马程序员_Java基础_装饰设计模式
- 黑马程序员----java设计模式之装饰设计模式和享元设计模式
- 47.黑马程序员-IO流缓冲区、装饰设计模式