裝飾模式例項

2022-07-18 05:30:13 字數 3295 閱讀 4817

使用者需求:

設計思路:

1.uml圖

2.採用裝飾模式動態地給乙個物件新增一些額外的功能,就擴充套件功能來說,提供了比繼承更具彈性的替代方案。

具體**實現:

1.抽象元件

moilephone類

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx}

2.具體元件

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx

public

override

void

call()

public

override

string

show()}}

mi類

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx

public

override

void

call()

public

override

string

show()}}

3.抽象裝飾類function類

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx

public

override

void

sendmessage()

public

override

void

call()

public

override

string

show()}}

4.具體裝飾類bluetooth 類

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx

public

override

string

show()}}

gps 類

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx }

}

cemera 類

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx

public

override

string

show()}}

客戶端

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

ylx }

}

執行結果:

體會和感悟:

優點:

裝飾模式可以提供比繼承更多的靈活性,以一種動態地方式擴充套件乙個物件的功能,並通過使用不同的具體裝飾類以及這些裝飾類的排列組合,創造出很多不同行為的組合。

具體構造類與具體裝飾類可以獨立變化。

缺點:

使用裝飾模式時將產生很多小物件,且比繼承更容易出錯。

適用場景:

它適用於在不影響其他物件的情況下,以動態、透明的方式給單個物件新增職責。當需要動態地給乙個物件增加功能,這些功能也可以動態地被撤銷。

模式例項之 裝飾例項

場景 遊戲修改器 描述 角色的級別太低,技能也弱,但關卡難度太大。往往一上來來不及回血,或遊戲設定回血太慢。這裡用遊戲修改器。一 角色 public abstract class role public int mp public int hp public abstract void restor...

裝飾者模式及其簡單例項

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

裝飾者模式 穿衣服例項

package com.decorator 這是個componet抽象類 public abstract class personpackage com.decorator 這是乙個concretecomponet的物件,是component類的子類 public class male extend...