设计模式:装饰模式的原理及代码演示
来源:互联网 发布:php 文本封装超链接 编辑:程序博客网 时间:2024/05/21 11:27
/*MyReader //专门用于读取数据的类。|--MyTextReader|--MyBufferedTextReader //缓冲区的|--MyMediaReader|--MyBufferedMediaReader//缓冲区的|--MyDataReader|--MyBufferDataReader//缓冲区的 上面的这个类扩展性很差 找到其参数的共同类型,通过多态的形式,可以提高扩展性。//优化后的体系MyReader //专门用于读取数据的类。|--MyTextReader|--MyMediaReader|--MyDataReader|--MyBufferedReader //其功能都是基于上面的类装饰模式比类继承要灵活,避免了继承体系臃肿。而且降低了类于类之间的关系。装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强的功能。所以装饰类和被装饰类通常都是属于一个体系中的。实际使用中: 通过装饰来增强原有代码的功能,它的灵活比如说你有一个对象是以有建立的。 现在想感觉这个功能不够用了,这时不要用继承,而是使用装饰。这时再写个类 把原的对象传进来就可以了。当写的功能有问题时,可以直接去掉,再使用原来 的功能,依然可以使用。灵活性更强。读取并显示行号:*/import java.io.*;class MyLineNumberReader{private Reader r;int num = 0;MyLineNumberReader(Reader r){this.r = r;}public String getNumberLine()throws IOException{StringBuilder sb = new StringBuilder();num++;int ch ;while((ch = r.read()) != -1){if(ch == '\r')continue;if(ch == '\n')return sb.toString();elsesb.append((char)ch);}if(sb.length() !=0)return sb.toString();return null;}public void setNum(int num){this.num = num;}public int getNum(){return num;}public void myClose() throws IOException{fr.close();}}class MyLineReaderDemo{public static void main(String[] args) throws IOException{FileReader fr = new FileReader("MyLineReaderDemo.java");MyLineNumberReader mr = newMyLineNumberReader(fr);String str;while((str = mr.getNumberLine()) != null)System.out.println(mr.getNum()+str);mr.myClose();}}
0 0
- 设计模式:装饰模式的原理及代码演示
- 装饰设计模式的演示
- 装饰模式设计原理
- 装饰器模式的设计原理
- 大话设计模式3 装饰模式 的java代码实现
- 装饰类及装饰设计模式
- 设计模式及之装饰模式
- 黑马程序员:装饰设计模式介绍及装饰模式与继承关系的区别
- 设计模式---装饰模式
- 设计模式:装饰模式
- 设计模式------装饰模式
- 设计模式--装饰模式
- 设计模式--装饰模式
- 设计模式--装饰模式
- 设计模式 装饰模式
- 设计模式----装饰模式
- 设计模式-【装饰模式】
- 设计模式--装饰模式
- 获取div的各种高度
- 【转】一条进程的栈区、堆区、数据区和代码区在内存中的映射
- 注册,上传图片,显示
- ppp拨号,renamed from ppp0问题
- 【转】GAE SDK 1.5.5版发布
- 设计模式:装饰模式的原理及代码演示
- 登录验证(验证码)
- Drag And Drop 进阶
- python中的引用与拷贝
- 为什么单个元素的元组要加上逗号?
- 编译问题跟maven编译水平设置也有关
- python中的引号
- 时间格式控制前面显示
- 子华