关闭

装饰者模式

246人阅读 评论(0) 收藏 举报
分类:

定义

动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案

示例说明

这是我github上的代码示代码

talk is cheap,show your code
所以读者直接参考我github上的代码,我这里虚构了一个常见游戏场景,不同角色有自己的能力值,里面的武器也都有相应的能力,当角色装备后会增加其能力值。

装饰者模式无论是被装饰与装饰组件,都需要继承自一个类,像代码中的Unit这个抽象类,
角色直接继承自Unit,这里添加了一个Arms抽象类也是继承自Unit,同时具体的武器继承自Arms,这里之所以多了一个Arms,是因为我想让这些武器必需描述一下自己,当然这个Arms类也可以去掉,让武器类直接继承自Unit。

运行DecoratorPatternTest测试方法就能看到比较直观的效果。

Java IO

装饰者模式最经典的使用就是java io api设计。
首先看一下其uml图
这里写图片描述
这里的InputStream就是所有的超类,下面所有的都可以说是装饰者

装饰者模式会引入大量的小类,不过可以跟Factory,Builder模式结合,这样使用起来不会那么眼花缭乱。

0
0
查看评论

简单理解设计模式之装饰者模式

闲话不多说,今天来谈谈装饰者模式: 首先,我觉得要学习设计模式,记住它的定义真的挺重要的,或者一开始的时候你不了解,但是后面理解模式的内涵之后,你会发现定义的精辟。 装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供比继承更有弹性的替代方案。 首先在设计类的时候,我们要明白这样一个...
  • YQYnsmile
  • YQYnsmile
  • 2016-09-26 21:26
  • 1269

设计模式实战应用之三:装饰者模式

装饰者模式的定义        装饰者模式是应用最普遍的设计模式之一。伟大的 Java 缔造者们将设计模式的应用发挥到了极致,作为解释型语言的 Java 从诞生到今天始终能够作为最主流与应用最广泛的语言力压其他众多的开发语言,与缔造者们不遗余力地提高其健壮性、...
  • defonds
  • defonds
  • 2014-01-03 21:17
  • 6917

设计模式 装饰者模式 带你重回传奇世界

今天继续设计模式之旅,给大家带来装饰者模式,国际惯例,先看定义。 装饰者模式:若要扩展功能,装饰者提供了比集成更有弹性的替代方案,动态地将责任附加到对象上。 先简单描述下装饰者模式发挥作用的地方,当我们设计好了一个类,我们需要给这个类添加一些辅助的功能,并且不希望改变这个类的代码,这时候就是装饰者模...
  • lmj623565791
  • lmj623565791
  • 2014-04-21 20:21
  • 17594

装饰者模式 java代码小示例

<br /><br />1、定义及作用<br />该模式以对客户端透明的方式扩展对象的功能。<br />2、涉及角色<br />抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。<br />具体构件角色:将要被附加功能的类...
  • xiaoquanhuang
  • xiaoquanhuang
  • 2011-04-08 20:07
  • 2835

学习、探究Java设计模式——装饰者模式

定义装饰者模式:在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象上,从而实现动态拓展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。设计原则要使用装饰者模式,需要满足以下设计原则: 1、多用组合,少用继承 2、开放-关闭原则:类应该对拓展开放,对修改关闭UML...
  • a553181867
  • a553181867
  • 2016-08-03 22:52
  • 4364

最常用的设计模式---装饰者模式(C++实现)

最常用的设计模式---适配器模式(C++实现)
  • lh844386434
  • lh844386434
  • 2014-01-06 22:39
  • 2010

设计模式总结之Decorator Pattern(装饰者模式)

装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
  • cooldragon
  • cooldragon
  • 2016-08-11 00:49
  • 1593

装饰者模式总结

装饰者模式包含两种对象:装饰者和组件【被装饰者】 装饰者模式的核心思想: 1.替代继承,动态的将责任附加到对象上 2.有效的扩展行为同时不违反开闭原则 3.有效的复用修饰者 装饰者模式的设计原则:开闭原则,多用组合少用继承,低耦合 装饰者模式的用途: 1.需要生产大量的类 2.这些类又可以原子...
  • sunshoupo211
  • sunshoupo211
  • 2014-11-03 17:32
  • 910

我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)

解决的问题: 我们在装饰新家的时候买了几幅抽象画,买回来之后发现有些加上色彩艳丽的边框更适合我们,而有的加上玻璃罩之后更能符合我们的使用。那我们来怎么解决这个问题呢?他需要动态的给别的对象增加额外的职责,这就是装饰者模式的目的。 我们可以通过继承的方式来给原对象增加新功能,但是装饰者模式...
  • tanningzhong
  • tanningzhong
  • 2015-01-24 14:47
  • 568

装饰者模式-星巴克

例子一、咖啡的制作 /** * 饮料类 */ public abstract class Beverage { //描述 String description = "Unknown Beverage"; public String getDescription...
  • wxwzy738
  • wxwzy738
  • 2013-09-24 21:12
  • 2181
    个人资料
    • 访问:74871次
    • 积分:1324
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:1篇
    • 译文:0篇
    • 评论:31条