黑马程序员——JAVA笔记——装饰设计模式
来源:互联网 发布:360网页广告拦截软件 编辑:程序博客网 时间:2024/06/05 09:39
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
装饰设计模式:
当想要对已有的对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有对象的功能,并提供加强功能。
那么自定义的该类就称为装饰类。
装饰类通常会通过构造方法接受被装饰的对象。
并基于被装饰的对象的功能,提供更强的功能。
例:
class Demo{public static void main(String[] args) throws IOException{Person p=new Person();//p.chifan();SuperPerson sp=new SuperPerson(p);sp.superchifan();}}class Person{public void chifan(){System.out.println("吃饭");}}class SuperPerson{private Person p;SuperPerson(Person p){this.p=p;}public void superchifan(){System.out.println("开胃酒");p.chifan();System.out.println("甜点");}}上面代码中的SuperPerson类就是Person的装饰类。
下面在举个例子。
MyReader专门用于读取数据的类
|--MyTestReader
|--MyBufferedTextReader
|--MyMediaReader
|--MyBufferedMediaReader
|--MyDataReader
|--MyBufferedDataReader
class MyBufferedReader extends MyReader
{
MyBufferedReader(MyTextReader mtr)
{}
MyBufferedReader(MydMediaReader mmr)
{}
}
上面这个类扩展性很差。
找到其参数的共同类型。通过多台的形式,可以提高扩展性。
class MyBufferedReader
{
privaet MyReader mr;
MyBufferedReader(MyReader mr)
{
this.mr=mr;
}
}
MyReader//专门用于读取数据的类
|--MyTestReader
|--MyMediaReader
|--MyDataReader
|--MyBufferedReader
装饰模式比继承要灵活,避免了继承体系的臃肿。
而且降低了类与类之间的关系。
装饰类因为是增强已有对象,具备的功能和已有对象是相同的,只不过提供了更强的功能。
所以装饰类和被装饰类通常都是属于一个体系中。
- 黑马程序员—— 装饰设计模式
- 黑马程序员 —— 装饰设计模式
- 黑马程序员——装饰设计模式
- 黑马程序员——【Java】装饰设计模式
- 黑马程序员——JAVA基础之装饰设计模式
- 黑马程序员——JAVA笔记——装饰设计模式
- 黑马程序员————JAVA 设计模式— 装饰模式(Decorator)详解。
- 黑马程序员——装饰类设计模式简介
- 黑马程序员_IO流——装饰设计模式
- 黑马程序员——装饰设计模式(io流)
- 黑马程序员——单例设计模式、装饰设计模式以及享元设计模式
- 黑马程序员——学习java IO的前奏,装饰设计模式
- 黑马程序员——学习Java基础之 io LineNumberReader 之装饰设计模式
- 【黑马程序员】多线程,设计模式——Java复习笔记
- 黑马程序员——装饰模式
- 黑马程序员 装饰设计模式学习笔记
- 黑马程序员——java设计模式
- 黑马程序员——Java设计模式
- windows的cmd命令
- JAVA词汇大全
- mysql数据库高可用高扩展性架构方案实施
- linux下安装和配置DNS服务器
- 常用sql
- 黑马程序员——JAVA笔记——装饰设计模式
- Java并发编程-32-带有延迟元素的队列-DelayQueue
- Linux-shell基础-1
- JDBC实例2 关于分包下不同表实体类的外键类型转换
- 交换排序-冒泡排序
- 剑指offer第三题:二维数组中查找
- OpenCV+C++ 视频图片相互转换
- uva6511 强连通分量
- poj 2388 Who's in the Middle