装饰模式

装饰模式定义:

动态地给一个对象增加一个额外的职责,就增加对象功能来说,装配模式比生成子类实现更为灵活。

装饰模式结构图:


image.png

装饰模式主要优缺点:

优点:
1.对于扩展一个对象的功能,装修模式比集成模式更加灵活,不会导致类的个数急剧增加。
2.可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选择不同的具体装饰类,从而实现不同的行动。
3.可以对一个对象进行多次装饰,通过使用不同的具体装饰类,以及这些装饰类的排列组合,可以创造出很多不同行为的组合,得到功能更强大的对象。
4,具体构建类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构建类和具体装饰类,原来类库代码无须改变,符合开闭原则。
缺点:
1.使用装饰模式进行系统设计时将产生很多小对象,这些对象的区分在与他们之间相互连接的方式有所不同,而不是他们的类或者属性有所不同,大量小对象的产生势必会占用更多的系统资源,在一定程度上印象程序的性能。
2.装饰模式的提供了一种比继承更加灵活机动的解决方案,但是同时也意味着比继承更加易于出错,排除也很困难,对于多次装饰的对象,调试时群钊错误可能需要逐级排查,比较繁琐。

装饰模式使用场景:

  1. 在不影响其他对象的情况下,以动态、透明的方式给单个对象增加职责。
    2.当不能采用集成的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式:系统存在独立的大量类。已经被定义不能继承。

透明装饰模式与半透明模式:

透明模式:透明性要求客户端程序不应该将对象生命为具体构建类型或具体装饰类型,而应该全部声明称抽象构建类型。
半透明模式:设计难度大,用户需要单独调用新增业务方法,为了能够调用到新增方法,不得不利用具体装修类型来定义装饰模式之后对象,而是具体构建类型还是可以使用抽象构建类型定义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途...
    端木轩阅读 576评论 0 0
  • (转载)原文地址 在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又...
    zjk_00阅读 682评论 0 2
  • 1 概述 在一个项目中,你会有非常多的因素考虑不到,特别是业务的变更,不时的冒出一个需求是很正常的情况。有三个继承...
    今晚打肉山阅读 368评论 0 0
  • 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。 类型 结构型 简介 装饰...
    lyu571阅读 680评论 0 2
  • 人生,要走过各式各样的门,譬如生命之门、生活之门、不幸之门、奋斗之门、死亡之门……史铁生说,"死是一件不必急于求成...
    天河奔骁阅读 4,157评论 3 6

友情链接更多精彩内容