設計模式之七 裝飾者模式

2021-12-29 22:45:48 字數 1350 閱讀 5691

hello...晚上讓我講講裝飾者模式吧..

裝飾者模式,顧名思義,就是裝飾.打個粗俗的比方,就是穿衣服...你穿了一件風衣,也穿了一件羊毛衫,通過這2個東西來裝飾你自己...

首先來個理論吧.

裝飾模式又叫做包裝模式,可以以對客戶端透明的方式擴充套件物件的功能,即客戶端並不會覺得物件在裝飾前和裝飾後有什麼不同。

在裝飾模式中的角色有:

抽象構件角色給出乙個抽象介面,以規範準備接收附加責任的物件。

具體構件角色定義乙個將要接收附加責任的類。

裝飾角色:持有乙個構件(component)物件的例項,並定義乙個與抽象構件介面一致的介面。

具體裝飾角色:負責給構件物件「貼上」附加的責任。

看下uml圖

好了,看看我們剛才舉得穿衣服的例子

看下uml圖

看下**

package edu.fjnu.cs.hwb.wrapperpattern.test;

public inte***ce wear

package edu.fjnu.cs.hwb.wrapperpattern.test;

public class people implements wear

}package edu.fjnu.cs.hwb.wrapperpattern.test;

public class people implements wear

}package edu.fjnu.cs.hwb.wrapperpattern.test;

public class windcoat extends clothes

public void say()

}package edu.fjnu.cs.hwb.wrapperpattern.test;

public class woollensweater extends clothes

public void say()

}看下客戶端的使用方式

package edu.fjnu.cs.hwb.wrapperpattern.test;

public class client}結果

如果有錯誤,希望指出!

JavaScript設計模式七 裝飾者模式

裝飾者模式提供比繼承更有彈性的替代方案。裝飾者用於包裝同介面的物件,用於通過過載方法的形式新增新功能,該模式可以在被裝飾者的前面或後面加上自己的行為以達到特定的目的。簡單的理解 給物件動態新增職責的方式稱為裝飾著模式。舉乙個簡單的例子 var xiaoming function this.eat f...

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...

設計模式之裝飾者模式

此模式動態將職責附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更具彈性的代替方案,以一圖一概括。要點1 裝飾者和被裝飾物件有相同的超型別。2 可以用乙個或多個裝飾者包裝乙個物件。3 裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。4 物件可以在任何時候被裝飾,所以可...