裝飾模式主要用於對乙個物件a的方法進行持續性地增強的模式。其採用多型的方式,通過乙個裝飾類含有下乙個裝飾類的引用進行不斷地呼叫,最終會呼叫到最原始的那個物件a,從而使原始物件a擁有了許多其根本沒有的功能。
下圖為裝飾模式的乙個靜態uml類圖結構:
下面給出上面uml結構的**參考實現。
抽象元件component的**如下:
public inte***cecomponent
抽象裝飾類decorator的**如下:
public classdecoratorimplementscomponent
publicdecorator()
public voidsampleoperation()
該類這裡用乙個具體的類進行表示,但是在實際中,可以將其設定為抽象類會更為合理一些,同時將sampleoperation()這個方法設定為抽象方法,要求所有的具體的裝飾類實現該方法。
具體裝飾類concretedecorator的**如下:
public classconcretedecoratorextendsdecorator
下面給出乙個建立裝飾類的典型**:
new decorator1(
new decorator2(
new decorator3(
newconcretecomponent()
裝飾模式與責任鏈模式有些類似,都是乙個物件含有下乙個物件的引用,而對客戶端而言,只需要從第乙個物件進行呼叫即可,不用關心最終是由哪乙個物件進行執行的,但是二者還是有很多區別,首先,裝飾模式一定是有乙個最原始的物件,而其他的裝飾類都是對這個原始的物件的增強的,所以通常情況下,其他裝飾類的對應的方法都會被呼叫,一直到達最原始的這個物件。而責任鏈卻未必會所有的責任物件都過一遍,它只要到達其所需要的地方就可以直接退出了。從本質上來看,責任鏈雖然前乙個物件會含有後乙個物件的引用,但是二者是平等的,但是裝飾模式卻不是,他是不平等的,最原始的那個物件是一定要被呼叫的,而其他的裝飾物件則是對這個原始物件的增強,包裝。
結構模式 組合模式
組合模式 composite pattern 組合多個物件形成樹形結構以表示具有 整體 部分 關係的層次結構。組合模式對單個物件 即葉子物件 和組合物件 即容 器物件 的使用具有一致性,組合模式又可以稱為 整體 部分 part whole 模式,它是一種物件結構型模式。將物件組合成樹形結構以表示部分...
企業應用架構模式之物件 關係結構模式
前面已經介紹了物件 關係行為模式,包括工作單元 標識對映 延遲載入,這些都是協調記憶體物件與關聯式資料庫之間行為操作的一些方法。記憶體物件與關聯式資料庫除了行為需要協調之外,在結構上也需要一些方法來保證彼此的完整,這就是物件 關係結構模式。這些方法主要有 標識域 外來鍵對映 關聯表對映 依賴對映 嵌...
設計模式 結構模式 外觀模式
外觀模式 fasade pattern 隱藏系統的複雜性 將一系列複雜的業務交給乙個外觀類來供使用者呼叫,使用者不用對具體的業務實現關注太多。最好理解的是電腦開關機的案例 computer的power on 或者power off是cpu,memory和disk的開關的總體結果,但是使用者無需知道這...