裝飾者模式

2021-08-14 06:17:52 字數 1782 閱讀 5945

**這篇文章只是為了加深我對裝飾者模式的理解,本人只是對**具體成了uml類圖,**是在菜鳥教程中看到的!!

用通俗的話講就是把乙個物件層層包裝,給他賦予多個不同的裝飾

乙個例子:

這個例子是在菜鳥教程上看到的,感覺很不錯

傳送門:裝飾者模式|菜鳥教程(下面的乙個筆記,author是叫周 霆)

類圖:(用word畫的,可能不太規範)

裝飾模式為已有類動態附加額外的功能就像lol、王者榮耀等類dota遊戲中,英雄公升級一樣。每次英雄公升級都會附加乙個額外技能點學習技能。具體的英雄就是concretecomponent,技能欄就是裝飾器decorator,每個技能就是concretedecorator;

**:(是周霆寫的例子)

//component 英雄介面 

public

inte***ce

hero

//concretecomponent 具體英雄盲僧

public

class

blindmonk

implements

hero

@override

public

void

learnskills()

}//decorator 技能欄

public

class

skills

implements

hero

@override

public

void

learnskills()

}//conretedecorator 技能:q

public

class

skill_q

extends

skills

@override

public

void

learnskills()

}//conretedecorator 技能:w

public

class

skill_w

extends

skills

@override

public

void

learnskills()

}//conretedecorator 技能:e

public

class

skill_e

extends

skills

@override

public

void

learnskills()

}//conretedecorator 技能:r

public

class

skill_r

extends

skills

@override

public

void

learnskills()

}//客戶端:召喚師

public

class

player

}

結果:

ps:再次感覺周霆這位大哥的例子,真的容易懂!

裝飾者模式

裝飾者模式 動態地將責任附加到物件上。若要擴張功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。裝飾者與被裝飾者物件具有相同的超型別。include include using namespace std class bever...

裝飾者模式

裝飾者模式,是在不改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。裝飾者模式中的角色 1 被裝飾者抽象component,是乙個介面或抽象類,就是定義最核心的物件,也是最原始的物件,這個類是需要裝飾類的基類。2 被裝飾者具體實現co...

裝飾者模式

裝飾者模式 裝飾者模式的好處是便於擴充套件,對乙個東西不管怎麼變,只需要找到相應的元件去改變它 1.如何組裝在一起 建立主題 packetbodycreator body new packetbodycreator 建立header packethtmlheadercreator html new ...