装饰者模式

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

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

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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