設計模式原來這麼簡單 裝飾器模式

2021-10-12 12:45:31 字數 1192 閱讀 7833

1.什麼是裝飾器模式

wiki: 允許將行為靜態或動態地新增到單個物件中,而不會影響同一類中其他物件的行為。

2.例項

以前用的qq秀,需要為角色穿不同的衣服(頭飾、臉飾、上衣、褲子。。。),不同的衣服展示不同的形象,而且還可以

根據形象的炫酷值和好友pk。

3.程式示例

/**

* qq秀角色

*/public

inte***ce

qqcharacter

public

class

defaultqqcharacter

implements

qqcharacter

@override

public

intgetcoolnum()

}

/**

* 帶上炫酷墨鏡(裝飾者)

*/public

class

wearcoolglasses

implements

qqcharacter

@override

public

void

show()

@override

public

intgetcoolnum()

}

@test

public

void

test()

-----預設角色-----

預設服裝

10-----裝飾後的角色-----

預設服裝

帶上炫酷墨鏡--

30-----裝飾後的預設角色-----

預設服裝

10

4.注意

這裡不要和介面卡(adapter)模式混淆,裝飾器是在原來的基礎上新增行為而並沒有改變原來類的行為

5.總結

當要新增額外的行為且不改變原來物件的行為或者當要實現乙個功能時要處理各種組合而產生較多子類時[1],使用該模式是最佳實踐。

[1]:如上面qq秀的例子,有不同的眼鏡和衣服就會產生不同的組合,當為了特定的組合而去建立類時就會使應用中存在較多的子類。

設計模式原來這麼簡單 命令模式

1.什麼是命令模式wiki 它把在稍後執行的乙個動作或觸發的乙個事件所需要的所有資訊封裝到乙個物件中。2.例項例如假如有乙個萬能遙控可以對任何東西發出任何命令 3.程式示例public inte ce command 目標 public inte ce target 電視類 public abstr...

設計模式原來這麼簡單 狀態模式

1.什麼是狀態模式wiki 狀態模式是一種允許物件在內部狀態改變時改變它的行為的行為型設計模式。2.示例假如當前有乙個任務,任務的狀態有待審核 審核通過 審核失敗 建立任務預設時待審核狀態 3.程式例項public inte ce istate public abstract class bases...

設計模式原來這麼簡單 介面卡模式

1.不適用介面卡 航行 public class hangxing 划槳 public class huajiang 只會說啟航並不划槳的老船長 public class chuanzhang 開始冒險 public void startadventures 小明船長按照慣例揚帆起航,而船卻紋絲不動...