您的位置:首页 > 其它

11对缓冲流分析出来的设计模式--装饰设计模式

2016-07-24 23:14 239 查看
缓冲流其实还是调用基本流的输入/输出,是未修改原来文件的基础上拓展出来的功能。

装饰设计模式:
试用场景:当想要对已有的对象进行功能拓展时。
流程:可以定义类,将已有对象传入,基于已有的功能,并提供增强的功能。
那么自定义的类成为包装类(装饰类)。

code:
class Person {
void study {
syso("book");
}
}

class PersonPlus {
Person p;

PersonPlus(Person p) {//code中一般讲基本类型对象通过自定义类的构造方法接受
this.p = p;
}

void studyPro() {//基于基础类拓展
syso("browser");
p.study();
syso("...");
}
}

*装饰设计模式和继承的区别:
引入:继承关系下的读文件结果
MyReader//一个做读取的类
|--TextReader//文本读取
|--MediaReader// 媒体文件读取

拓展:加入缓冲技术提高读数据效率。
MyReader//一个做读取的类
|--TextReader//文本读取
|--TextBufferedReader extends TextReader 复写read  //文件的缓冲流
|--MediaReader// 媒体文件读取
|--MediaBufferedReader extends MediaReader 复写read// 媒体的缓冲流
改机构不足:若加入读取文件的新类型,每个类都需要各自拓展;结构及维护性差

装饰模式:
MyReader//一个做读取的类
|--TextReader//文本读取
|--MediaReader// 媒体文件读取
|--BufferedReader // 加入改读取流体系中,对Text、Media等拓展
好处:仅维护拓展的该类即可,就算该类写挂了,不适用即可。

class BufferedReader extends MyReader{ //加入该体系中
BufferedReader(MyRader my) { // 使用多态最大限度话的拓展
...
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: