`
javawangzilong
  • 浏览: 56872 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

装饰设计模式

阅读更多
装饰设计模式:
当对类的功能进行增强时,可称之为对该类的装饰。
同时它的出现具备灵活性

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
分享到:
评论

相关推荐

    设计模式专题之(七)装饰模式---设计模式装饰模式示例代码(python--c++)

    装饰模式是一种结构型设计模式,它允许在运行时动态地给对象添加新的行为或职责,同时保持对象的接口不变。这种模式使得我们可以在不修改原有代码的基础上,通过组合不同的装饰来扩展对象的功能,实现了代码的高可...

    设计模式--装饰者模式java例子

    装饰者模式是软件设计模式中的一种结构型模式,它的主要目的是动态地给对象添加新的功能,而无需修改原有代码。在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...

    24种设计模式以及混合设计模式

    设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...

    Head First 设计模式 +Java设计模式(第2版)

    这本书通过丰富的图像、故事和幽默的方式,引导读者了解23种经典的GoF(Gang of Four)设计模式,包括单例模式、工厂模式、观察者模式、装饰器模式、适配器模式、代理模式等。书中强调了如何在实际项目中选择和应用...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    54-Spring设计模式之装饰器模式1

    Spring 设计模式之装饰器模式详解 在软件设计中,经常会遇到需要在不修改原有代码的情况下,添加新的功能或行为。这时,装饰器模式便可以发挥其作用。在 Spring 设计模式中,装饰器模式是非常重要的一种设计模式。 ...

    GOF设计模式中英文+设计模式精解中英文

    GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    设计模式(包含5个设计模式)含源代码报告.rar

    这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...

    设计模式课件大全

    设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...

    新版设计模式手册 - C#设计模式(第二版)

    《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    设计模式之美——教你写出高质量代码

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式...

    软件设计模式期末作业

    本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们在代码复用、结构优化和系统扩展性提升方面扮演着重要角色。 首先,装饰模式是一种...

    深入浅出设计模式(中文版)

    《深入浅出设计模式》是一本面向Java开发者的专业书籍,旨在帮助读者理解并熟练应用设计模式。设计模式是软件工程中的重要概念,它总结了在特定情境下解决常见问题的最佳实践,是经验丰富的开发者们智慧的结晶。这...

    设计模式那点事

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、...

    您的设计模式.pdf。

    涵盖了策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式、门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式、装饰模式、迭代器模式等十四种常用的设计模式。 策略模式...

    软件设计模式之装饰模式讲解

    软件设计模式之装饰模式讲解ppt,可用于教学课件。

Global site tag (gtag.js) - Google Analytics