您的位置:首页 > 职场人生

黑马程序员 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: