黑马程序员 java基础IO装饰者模式
2014-03-29 02:38
316 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
/**
* 装饰者设计模式 当想要对已有的对象进行功能增强时 可以定义类 将已有对象传入 基于已有的功能并提供完善加强功能 那么自定义 的该类被称为装饰类
*
* 面试 穿的好看点。。。。。
*
* @author lazy 后期更改不介意改源代码
*
*
* IO
*
*
* MyReader//专门用于读取数据的类
* |--MyTextReader //自己的特殊行为
* |--MyBufferedTextReader
* |--MyMediaReader
* |--MyBufferedMediaReader
* |--MyDataReader
* |--MyBufferedDataReader
* 以上的扩展体系是可以用的 但是过于复杂 臃肿
* 我们要对它进行优化
*
* class MyBufferedReader{
* MyBuffered(MyTextReader text)
* {
* }
* MyBuffered(MyMediaReader media)
* {
* }
* .....
* }
* 上诉扩展性很差
* 找到其参数的共同类型 通过多台的形式可以提高扩展性
*
* class MyBufferedReader extends MyReader{
* MyBufferedReader(MyReader r)
* {
*
* }
* }
*
* MyReader//专门用于读取数据的类
* |--MyTextReader //自己的特殊行为 *
* |--MyMediaReader *
* |--MyDataReader
* |--MyBufferedReader //不要多继承 巧用多态 装饰者
*
* 装饰模式比继承要灵活 避免了继承体系臃肿
* 而且降低了类与类之间的 关系
*
* 装饰类因为增强已有对象 具备的 功能和已有对象是相同的 只不过提供了更强的功能
* 所以装饰类和被装饰类通常都属于一个体系中( 同在父类中 同在接口 中)
*
*
*/
class Person {
public void chifan() {
System.out.println("吃饭。。");
}
}
/**
* 装饰Person
*
* @author lazy
*
*/
class SuperPerson {
private Person p;
public SuperPerson(Person p) {
// TODO Auto-generated constructor stub
this.p = p;
}
public void superChifan() {
System.out.println("开胃酒。。");
// System.out.println("吃饭。。");
p.chifan();
System.out.println("甜点。。");
}
}
public class PersonDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person();
// p.chifan();
SuperPerson sp = new SuperPerson(p);
sp.superChifan(); // 这就是装饰者
}
}
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
/**
* 装饰者设计模式 当想要对已有的对象进行功能增强时 可以定义类 将已有对象传入 基于已有的功能并提供完善加强功能 那么自定义 的该类被称为装饰类
*
* 面试 穿的好看点。。。。。
*
* @author lazy 后期更改不介意改源代码
*
*
* IO
*
*
* MyReader//专门用于读取数据的类
* |--MyTextReader //自己的特殊行为
* |--MyBufferedTextReader
* |--MyMediaReader
* |--MyBufferedMediaReader
* |--MyDataReader
* |--MyBufferedDataReader
* 以上的扩展体系是可以用的 但是过于复杂 臃肿
* 我们要对它进行优化
*
* class MyBufferedReader{
* MyBuffered(MyTextReader text)
* {
* }
* MyBuffered(MyMediaReader media)
* {
* }
* .....
* }
* 上诉扩展性很差
* 找到其参数的共同类型 通过多台的形式可以提高扩展性
*
* class MyBufferedReader extends MyReader{
* MyBufferedReader(MyReader r)
* {
*
* }
* }
*
* MyReader//专门用于读取数据的类
* |--MyTextReader //自己的特殊行为 *
* |--MyMediaReader *
* |--MyDataReader
* |--MyBufferedReader //不要多继承 巧用多态 装饰者
*
* 装饰模式比继承要灵活 避免了继承体系臃肿
* 而且降低了类与类之间的 关系
*
* 装饰类因为增强已有对象 具备的 功能和已有对象是相同的 只不过提供了更强的功能
* 所以装饰类和被装饰类通常都属于一个体系中( 同在父类中 同在接口 中)
*
*
*/
class Person {
public void chifan() {
System.out.println("吃饭。。");
}
}
/**
* 装饰Person
*
* @author lazy
*
*/
class SuperPerson {
private Person p;
public SuperPerson(Person p) {
// TODO Auto-generated constructor stub
this.p = p;
}
public void superChifan() {
System.out.println("开胃酒。。");
// System.out.println("吃饭。。");
p.chifan();
System.out.println("甜点。。");
}
}
public class PersonDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person();
// p.chifan();
SuperPerson sp = new SuperPerson(p);
sp.superChifan(); // 这就是装饰者
}
}
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
相关文章推荐
- JAVA基础(五)IO(三)包含装饰者设计模式
- 黑马程序员 _ java基础 _ 之装饰者设计模式
- 黑马程序员——学习Java基础之 io LineNumberReader 之装饰设计模式
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员——java基础-IO(一)
- 黑马程序员_Java基础[14]_模版设计模式、习题练习
- 黑马程序员---Java基础学习笔记IO-2
- 黑马程序员_Java基础——IO框架(上)(第5篇)
- 黑马程序员_Java基础——IO框架(下)(第6篇)
- 黑马程序员---JAVA基础JAVA23种设计模式之---单例设计模式
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础——IO输入与输出_3
- 黑马程序员----------java基础知识加强之IO输入输出
- 装饰者模式--java io
- java.io.*与装饰者模式
- JavaIO中的装饰者模式(Wrapper)
- Java IO 装饰者模式
- 【黑马程序员】Java基础学习博客——两种设计模式
- 黑马程序员—Java基础—IO1
- 黑马程序员-Java基础:IO