日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

本文轉(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 藍(lán)buff extends Buff { 
  14.  
  15.    private 英雄 英雄; 
  16.    public 藍(lán)buff(英雄 英雄){ 
  17.         this.英雄 = 英雄; 
  18.     } 
  19.  
  20.     @Override 
  21.    public int 冷卻() { 
  22.      return 英雄.冷卻()  + 藍(lán)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 紅藍(lán)buff李白 = new 籃buff(紅buff李白); 
  11.  
  12.     } 

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

總結(jié)

出自《Head first 設(shè)計模式》


網(wǎng)站標(biāo)題:重學(xué)設(shè)計模式之裝飾者模式
標(biāo)題路徑:http://www.5511xx.com/article/cdsjoii.html