裝飾設計模式和繼承的區別

2022-08-24 03:39:09 字數 975 閱讀 8605

/*

裝飾設計模式:

當想要對已有的物件進行功能增強時,

可以定義類,將已有物件傳入,基於已有的功能,並提供加強功能。

那麼自定義的該類稱為裝飾類。

裝飾類通常會通過構造方法接收被裝飾的物件。

並基於被裝飾的物件的功能,提供更強的功能。

裝飾和繼承

myreader//專門用於讀取資料的類。

|--mytextreader

|--mybuffertextreader

|--mymediareader

|--mybuffermediareader

|--mydatareader

|--mybufferdatareader

class mybufferreader

mybufferreader(mymediareader media)

{}}上面這個類擴充套件性很差。

找到其引數的共同型別。通過多型的形式。可以提高擴充套件性。

class mybufferreader extends myreader

} myreader//專門用於讀取資料的類。

|--mytextreader

|--mymediareader

|--mydatareader

|--mybufferreader//裝飾類

以前是通過繼承將每乙個子類都具備緩衝功能。

那麼繼承體系會複雜,並不利於擴充套件。

現在優化思想。單獨描述一下緩衝內容。

將需要被緩衝的物件。傳遞進來。也就是,誰需要被緩衝,誰就作為引數傳遞給緩衝區。

這樣繼承體系就變得很簡單。優化了體系結構。

裝飾模式比繼承要靈活。避免了繼承體系臃腫。

而且降低了類於類之間的關係。

裝飾類因為增強已有物件,具備的功能和已有的是相同的,只不過提供了更強功能。

所以裝飾類和被裝飾類通常是都屬於乙個體系中的。

*/

裝飾設計模式 繼承的區別

一 裝飾設計模式 對一組物件的功能進行增強時,就可以使用該模式進問題的解決。對事物的本質不發生改變,只對它進行增強。例如 買房子,買了毛坯房,進行裝修後,功能增加 家庭更美,但是它的本質還是房子。二 演示 1 以前人出去吃飯,就是單純的吃個飯。演示 2 但是隨著社會的進步,社會矛盾的變化。由人民對美...

裝飾和繼承的區別

裝飾和繼承的區別 myreader 專門用於讀取資料的類 mytextreader mybuffertextreader mymediareader mybuffermediareader mydatareader mybufferdatareader class mybufferreader my...

初探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...