設計模式(四) 裝飾模式

2021-09-25 15:23:33 字數 1283 閱讀 8715

裝飾模式又被稱為包裝模式。通過對客戶端透明的方式來拓展物件的功能,是繼承關係的一種替代方案

假設,現在要給qq秀裡的人物設計裝扮衣服,每個人可按自己不同的喜好搭配不同的衣服。

先建立person類,它裡面有乙個show()展示(也是穿衣服)的方法

public

class

person

public

person

(string name)

//後面整合的子類都要覆蓋該方法

public

void

show()

}

再建立乙個finerydecorator的裝飾類,繼承person類

public

class

finerydecorator

extends

person

@override

public

void

show()

}

相繼建立各種各樣的衣服類,都繼承與finerydecorator裝飾類

//t恤

public

class

tshirts

extends

finerydecorator

}//大垮褲

public

class

bigtrouser

extends

finerydecorator

}//後面的類,以此類推

/** ....

*/

檢驗成果,測試:

public

static

void

main

(string[

] args)

裝飾者模式可以動態地將責任附加到物件上.若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

裝飾者和被裝飾者之間必須是一樣的型別,也就是要有共同的超類。在這裡應用繼承並不是實現方法的複製,而是實現型別的匹配。因為裝飾者和被裝飾者是同乙個型別,因此裝飾者可以取代被裝飾者,這樣就使被裝飾者擁有了裝飾者獨有的行為。根據裝飾者模式的理念,我們可以在任何時候,實現新的裝飾者增加新的行為。如果是用繼承,每當需要增加新的行為時,就要修改原程式了。

設計模式筆記(四) 裝飾模式

裝飾模式 decorator 裝飾模式是為已有功能動態的新增更多功能的一種方式。using system namespace studesignmode.decorator public abscustomer public abscustomer string name public virtua...

設計模式系列(四) 裝飾模式

動態的為乙個物件的某些職責新增一些額外的功能,與通過繼承來獲得新功能相比,decorator 更加的靈活 試想一下,如果沒有 decorator,轉而使用繼承,每當想要為乙個物件新增某個功能時,我們就需要生成乙個子類。當需要這些功能的組合時,就要生成更多的具有組合功能的子類。這會產生兩個問題 1.類...

設計模式(四) 裝飾器模式

裝飾器模式 動態的將責任附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。意圖 將乙個介面轉換為另乙個介面 設計原則 開閉原則 對類的擴充套件開放,對修改關閉 裝飾器模式設計要點 1.裝飾者和被裝飾物件有相同的超型別 2.可以用乙個或者多個裝飾者去包裝乙個物件 3.裝飾者可以在所...