模式例項之 裝飾例項

2022-02-11 09:59:56 字數 1517 閱讀 8292

場景:遊戲修改器

描述:角色的級別太低,技能也弱,但關卡難度太大。往往一上來來不及回血,或遊戲設定回血太慢。這裡用遊戲修改器。

(一)角色

public

abstract

class

role

public

int mp

public

int hp

public

abstract

void restoremp();

public

abstract

void restorehp();

}系統預設的回藍系統

restoremp

,回血系統

restorehp

(二)法師角色

public

class

mage:role

public

override

void restorehp()

}正常情況下,每秒回覆藍

10點,血

20點。

(三)裝飾

public

abstract

class

decorator : role

public decorator(role role)

public

override

void restoremp()

public

override

void restorehp()

}(四)

mp修改

//////

mp恢復修改

///public

class

pluginformp : decorator

public pluginformp(role role):base(role)

public

override

void restoremp()

}(五)

hp恢復

//////

hp恢復修改

///public

class

pluginforhp : decorator

public

override

void restorehp()

}(六)測試

public

void testdecorator()

結果:每秒回覆20點mp

每秒回覆10點mp

啟用遊戲修改之後……

修改遊戲:每秒回覆100點mp

修改遊戲:每秒回覆500點hp

如何使「

物件功能的擴充套件

」能夠根據需要來動態地實現?同時避免

「擴充套件功能的增多

」帶來的子類膨脹問題?從而使得任何

「功能擴充套件變化

」所導致的影響將為最低?

動態地給乙個物件新增一些額外的職責。就增加功能來說,

decorator

模式相比生成子類更為靈活。《設計模式》

gof

裝飾模式例項

使用者需求 設計思路 1.uml圖 2.採用裝飾模式動態地給乙個物件新增一些額外的功能,就擴充套件功能來說,提供了比繼承更具彈性的替代方案。具體 實現 1.抽象元件 moilephone類 using system using system.collections.generic using sys...

模式例項之 職責鏈例項

場景 白眉大俠與江湖 描述 江湖綠林道與開封府。小嘍兵與小寨主,小七傑可以辦案。俠客要小五義。劍客要劍客對付。一 開封府 public abstract class kaifentfu public abstract void handle lulin lulin 二 小七傑,小五義,小五義老師 p...

裝飾者模式及其簡單例項

咖啡店裡咖啡中可以加不同的配料 摩卡 牛奶 糖 奶泡 不同的飲品加上不同的配料有不同的價錢,怎樣實現呢?可能你的第一印象會想到使用繼承,1.首先定義乙個咖啡基類 2.對於加糖的,加牛奶的,加摩卡的 加奶泡的,分別寫乙個子類繼承 3.對於加糖,又加奶的寫乙個類,對於對於加糖,又摩卡的寫乙個類,對於對於...