目的:在不使用繼承的情況下,即不建立子類的情況下擴充套件已有物件的功能。
該模式有四個角色:
1.抽象介面:是裝飾類和被裝飾類的基本型別。
2.具體角色:被裝飾的類,具有一些自己的功能
3.抽象裝飾類:裝飾抽象類用於產生裝飾具體子類
4.裝飾具體類:負責裝飾具體角色。
/**抽象構件角色 */
public
inte***ce
car/**具體構件*/
public
class
baoma
implements
car}
/** 抽象裝飾角色(4s店)*/
public
abstract
class
fours
implements
car@override
public
void
skin()
}/**具體裝飾角色(紅色噴漆)*/
public
class
redspraypaint
extends
fours
@override
public
void
skin()
}
抽象介面:inputstream,這個抽象類為各種子型別流處理器提供統一的介面。
具體角色:由fileinputstream、objectinputstream 、bytearrayinputstream 等原始流處理器扮演,他們實現了inputstream的介面,可以被裝飾器裝飾。
抽象裝飾類角色:filterinputstream,實現了inputstream的介面。
具體裝飾角色:由datainputstream 、bufferedinputstream等扮演。
public
abstract
class
inputstream
public
class
objectinputstream
extends
inputstream
public
class
fileinputstream
extends
inputstream
public
class
filterinputstream
extends
inputstream
public
class
bufferedinputstream
extends
filterinputstream
}
1.介面卡模式:使用現有類的功能,但通過不同的標準介面去呼叫,改變介面達到重複使用的目的。
2.裝飾器模式:在保持原有類介面的前提下,增強原有類的功能。
裝飾器模式
大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...
裝飾器模式
裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...
裝飾器模式
一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...