装饰者模式

原创 2017年08月01日 19:29:38

定义

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

示例说明

这是我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模式结合,这样使用起来不会那么眼花缭乱。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

装饰者模式Android实例

  • 2016年07月30日 09:58
  • 6.77MB
  • 下载

装饰者模式

  • 2014年06月09日 13:01
  • 5KB
  • 下载

Javascript中的装饰者模式以及AOP简介

装饰者顾名思义就是起到装饰作用,装饰者模式就是可以动态给某个对象增加一些额外的行为,而不会影响从这个类中派生的其他对象。模拟传统面向对象语言的装饰者模式假设我们编写一个飞机大战的游戏,飞机的等级会随经...
  • mzzzzq
  • mzzzzq
  • 2016年04月11日 23:02
  • 513

装饰者模式 - PHP版

  • 2014年05月21日 09:45
  • 2KB
  • 下载

具有装饰者的模式照片

  • 2009年06月14日 00:46
  • 1.78MB
  • 下载

JS—Decorator(装饰者)模式

http://taobaofed.org/blog/2015/11/16/es7-decorator/ 转载自淘宝前端团队 装饰模式是装饰模式,是通过封装其他对象达到设计的目的。 装饰模式不一样,仅仅...

装饰者模式案例学习代码

  • 2013年03月03日 01:07
  • 2KB
  • 下载

装饰者模式源代码java

  • 2014年01月18日 21:59
  • 3KB
  • 下载

JAVA IO化繁为简-装饰者模式

在学习java.io.*包的时候,InputStream那一群类很让人反感,子类繁多就不用说,使用起来非常奇怪。我们想以缓存的方式从文件中读取字节流。总要先创建一个FileInputStream,然后...

设计模式-装饰者

  • 2015年11月07日 10:44
  • 4.44MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:装饰者模式
举报原因:
原因补充:

(最多只允许输入30个字)