日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
重學設計模式之裝飾者模式

本文轉(zhuǎn)載自微信公眾號「碼個蛋」,作者陳宇明 。轉(zhuǎn)載本文請聯(lián)系碼個蛋公眾號。 

代碼

抽象基類

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

實現(xiàn)基類

 
 
 
 
  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 的實現(xiàn)類

 
 
 
 
  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.     } 

注意:以上代碼塊用中文編寫類名、變量名是為了讓大家更好的理解,在實戰(zhàn)過程中記得替換成相對應的英文。

總結(jié)

出自《Head first 設計模式》


網(wǎng)站標題:重學設計模式之裝飾者模式
本文來源:http://www.dlmjj.cn/article/cdsjoii.html