当前位置:主页 > 查看内容

重学设计模式之装饰者模式

发布时间:2021-09-24 00:00| 位朋友查看

简介:本文转载自微信公众号「码个蛋」,作者陈宇明 。转载本文请联系码个蛋公众号。 代码 抽象基类 public abstractclass英雄{ public abstract int 攻击() public abstract int 冷却() ........ } 实现基类 public class李白extends英雄{ @Override public int……

本文转载自微信公众号「码个蛋」,作者陈宇明 。转载本文请联系码个蛋公众号。

 

代码

抽象基类

  1. public abstract class 英雄 { 
  2.   public abstract int 攻击() 
  3.   public abstract int 冷却() 
  4.    ........ 

实现基类

  1. public class 李白 extends 英雄 { 
  2.    @Override 
  3.    public int 冷却(){ 
  4.       return 5; 
  5.   } 
  6.    ........ 

Buff 抽象类

  1. public abstract Buff extends 英雄 { 
  2.    public abstract int 攻击() 
  3.   public abstract int 冷却() 
  4.    ........ 

不同 Buff 的实现类

  1. public 红buff extends Buff { 
  2.  
  3.    private 英雄 英雄; 
  4.    public 红buff(英雄 英雄){ 
  5.         this.英雄 = 英雄; 
  6.     } 
  7.      @Override 
  8.    public int 攻击() { 
  9.      return 英雄.攻击() + 红buff额外攻击; 
  10.    } 
  11.    ......... 
  12.   
  13. public 蓝buff extends Buff { 
  14.  
  15.    private 英雄 英雄; 
  16.    public 蓝buff(英雄 英雄){ 
  17.         this.英雄 = 英雄; 
  18.     } 
  19.  
  20.     @Override 
  21.    public int 冷却() { 
  22.      return 英雄.冷却()  + 蓝buff额外减少的冷却值; 
  23.    } 
  24.    ......... 
  25.  

客户端

  1. public class Client { 
  2.     public static void main(String[] args) { 
  3.         // 没有buff的英雄 
  4.         英雄 无buff李白 = new 李白(); 
  5.         
  6.         // 打了红 
  7.         红buff 红buff李白 = new 红buff(无buff李白); 
  8.  
  9.         // 再来个篮 
  10.         篮buff 红蓝buff李白 = new 篮buff(红buff李白); 
  11.  
  12.     } 

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

总结

出自《Head first 设计模式》


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/wjyke4sj-fv324ApHGLuRA
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:大厂如何使用Java8日期时间? 下一篇:没有了

推荐图文


随机推荐