装饰设计模式:
当对类的功能进行增强时,可称之为对该类的装饰。
同时它的出现具备灵活性
Class Person{
Void chi(){
System.out.println(“chifan”);
}
}
Class newPerson{
Private Person p;
NewPerson(Person p){
This.p = p;
}
Void newChi(){
System.out.println(“来一杯”);
P.chi();
System.out.println(“甜点”);
System.out.println(“来一根”);
}
}
装饰和继承:
装饰设计模式是一种解决某一类问题的思想。该类问题的有效解决方案。解决给类提供增强型功能的问题。
继承:是面向对象的特征之一。
例子:(API中没有真实存在的类)
Writer
|--TextWriter
|--MediaWriter
该体系的出现已经可以完成对文本数据和媒体数据的写操作。
但是发现,效率较低,为了提高效率,就加入了缓冲技术。
文本写入缓冲
媒体写入缓冲
按照面向对象的思想,为了提高扩展,可以通过继承的方式来完成。
Writer
|--TextWriter
|--BufferedTextWriter
|--MediaWriter
|--BufferedMediaWriter
这样就完成了文本和媒体数据写操作,效率提高。
当如果该体系加入一个子类BaseWriter,而且该子类也需要效率提高,
Writer
|--TextWriter
|--BufferedTextWriter
|--MediaWriter
|--BufferedMediaWriter
|--BaseWriter
|--BufferedBaseWriter
如果体系扩展,都需要定义一个该子类具备高效缓冲功能的子类。
这样体系扩展很麻烦。
所以我们发现,这些子类使用的缓冲技术都是一样的,缓冲区其实就是定义了临时存储容器将数据进行临时缓冲,至于具体的写操作,还是writer的子类对象完成的,比如TextWriter等
既然这样,可以将缓冲技术单独封装成一个对象。要对那个具体的对象进行缓冲技术的使用,只要将对象传递给缓冲区对象即可。
对缓冲区对象进行单独描述
Class BufferedWriter extends Writer{
BufferedWriter(Writer w){
}
}
当缓冲技术单独封装成了对象后,它具备的还是写功能,只不过可以让其他写功能进行高效,所以它还是Writer类中的一员
所以这时体系变成了这样
Writer
|--TextWriter
|--MediaWriter
|--BufferedWriter
和原来的体系
Writer
|--TextWriter
|--BufferedTextWriter
|--MediaWriter
|--BufferedMediaWriter
|--BaseWriter
|--BufferedBaseWriter
装饰设计模式的出现可以对一组类进行功能的增强。而且装饰类本身也是该体系中的一个子类。
代码体现:
通常情况下,
装饰类一般不单独存在。
都是通过构造函数接收被装饰的对象
基于被装饰的对象的功能,并对外提供增强的功能。
BufferedWriter//这时一个提供增强功能的类,就把这种优化方式,定义成一种最终解决问题的方案,这种设计模式就是装饰设计模式
装饰设计模式和继承的区别:
继承会让体系变得臃肿
装饰相对来说更为灵活。
在IO中装饰设计模式用的很多。
比如
BufferedWriter
BufferedReader
分享到:
相关推荐
NULL 博文链接:https://871656094.iteye.com/blog/2355335
设计模式专题之(七)装饰模式---设计模式装饰模式示例代码(python--c++)
设计模式--装饰者模式java例子
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...
java设计模式之装饰者模式代码
软件设计模式之装饰模式讲解ppt,可用于教学课件。
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。 1.1 设计模式要求 在软件的设计中请使用到三种以上设计模式。 1.2 画图基本要求 能实现基本图形的绘制功能,包括实现...
设计模式—装饰者模式
设计模式 c# 装饰模式
软件设计模式作业,要求用3个设计模式以上实现。代码涉及了装饰模式,工厂模式和适配器模式
设计模式相关资料设计模式相关资料设计模式相关资料设计模式相关资料设计模式相关资料设计模式相关资料
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...
设计模式 - 装饰模式(C++实例) 若有问题,请指出。
C++23种设计模式之 装饰模式。:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需 要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功 能),就会增加类的...
54-Spring设计模式之装饰器模式1
装饰器模式,设计模式.