本文转载自微信公众号「码个蛋」,作者陈宇明 。转载本文请联系码个蛋公众号。
代码
抽象基类
- public abstract class 英雄 {
- public abstract int 攻击()
- public abstract int 冷却()
- ........
- }
实现基类
- public class 李白 extends 英雄 {
- @Override
- public int 冷却(){
- return 5;
- }
- ........
- }
Buff 抽象类
- public abstract Buff extends 英雄 {
- public abstract int 攻击()
- public abstract int 冷却()
- ........
- }
不同 Buff 的实现类
- public 红buff extends Buff {
- private 英雄 英雄;
- public 红buff(英雄 英雄){
- this.英雄 = 英雄;
- }
- @Override
- public int 攻击() {
- return 英雄.攻击() + 红buff额外攻击;
- }
- .........
- }
- public 蓝buff extends Buff {
- private 英雄 英雄;
- public 蓝buff(英雄 英雄){
- this.英雄 = 英雄;
- }
- @Override
- public int 冷却() {
- return 英雄.冷却() + 蓝buff额外减少的冷却值;
- }
- .........
- }
客户端
- public class Client {
- public static void main(String[] args) {
- // 没有buff的英雄
- 英雄 无buff李白 = new 李白();
- // 打了红
- 红buff 红buff李白 = new 红buff(无buff李白);
- // 再来个篮
- 篮buff 红蓝buff李白 = new 篮buff(红buff李白);
- }
- }
注意:以上代码块用中文编写类名、变量名是为了让大家更好的理解,在实战过程中记得替换成相对应的英文。
总结
出自《Head first 设计模式》
网站标题:重学设计模式之装饰者模式
网站网址:http://www.shufengxianlan.com/qtweb/news25/355425.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联