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

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

代码

抽象基类

 
 
 
 
  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 设计模式》

网站标题:重学设计模式之装饰者模式
网站网址:http://www.shufengxianlan.com/qtweb/news25/355425.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联