码仔漫画|重学设计模式之装饰者模式

发布于 5 年前作者 qianghuang1373 次浏览最后编辑 5 年前来自 share

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

WXOPEN Club 内容图片

代码

抽象基类

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李白);

    }
}

注意:以上代码块用中文编写类名、变量名是为了让大家更好的理解,在实战过程中记得替换成相对应的英文。

总结

WXOPEN Club 内容图片出自《Head first 设计模式》


PS:

内容是我之前写过的,改成了漫画的形式。

大家觉得不错就点个赞,如有建议可以欢迎留言讨论。

1 回复
lifan
lifan1 楼7 个月前

让我想起了一本大话设计模式,介绍方式都很独特啊