装饰者模式

来源:互联网 发布:javascript 加载顺序 编辑:程序博客网 时间:2024/06/03 19:42

定义

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

示例说明

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

原创粉丝点击