初探裝飾器模式

2022-08-27 22:12:18 字數 1874 閱讀 9296

裝飾器模式:動態地將責任附加到物件上,允許使用者向現有物件新增新功能而不改變其結構。若要擴充套件功能,裝飾器提供了比繼承更有彈性的替代方案。

場景:假如有這樣乙個抽象裝備類

package

pattern.decorator;

public

abstract

class

equipment

//獲取戰鬥力

public

abstract

intgetpower();

}

然後實現乙個**類繼承上面的裝備類

package

pattern.decorator;

public

class weapon extends

equipment

@override

public

intgetpower()

}

一段時間後,裝備增加了高階,時裝,強化等功能,這些功能都可以提公升戰鬥力,現在希望計算提公升後的戰鬥力。

先不管其他方法是怎麼實現這個需求的,讓我們來看看裝飾器模式是怎麼設計的,並且不會改變上面的weapon類。

首先,設計乙個裝備的裝飾器抽象類

package

pattern.decorator;

public

abstract

class decorator extends

equipment

然後實現強化,高階,時裝的裝飾類

強化(強化一次戰力提公升1000):

package

pattern.decorator;

public

class strengthdecorator extends

decorator

@override

public

string getdesc()

@override

public

intgetpower()

}

高階(高階一次戰力提公升2000):

package

pattern.decorator;

public

class advancedecorator extends

decorator

@override

public

string getdesc()

@override

public

intgetpower()

}

時裝(根據不同的時裝提公升戰力):

package

pattern.decorator;

public

class factiondecorator extends

decorator

else

}@override

public

string getdesc()

@override

public

intgetpower()

}

最後實現個測試類看看裝飾器模式是怎麼運作的

package pattern.decorator;

public class showcontroller

}

執行結果:

屠龍寶刀,戰力:1000000

高階了10次,屠龍寶刀,戰力:1020000

春節時裝,高階了10次,屠龍寶刀,戰力:1025000

強化了15次,春節時裝,高階了10次,屠龍寶刀,戰力:1040000

PYTHON裝飾器初探

python裝飾器的執行過程 在函式定義時,裝飾器就已經執行了 在呼叫裝飾器修飾的原函式的時候,此時執行的是裝飾器裡的函式 例子 控制台輸入 def log text print print one defdecorator func print print oneone def args,kw f...

初探Java裝飾者模式和繼承模式

created by al wl228081 on 2017 8 10.定義人類 public class persondemo public static class person public static class newperson void chifan public static cl...

裝飾器模式

大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...