2 裝飾器模式

2021-09-25 07:45:41 字數 1483 閱讀 6544

目的:在不使用繼承的情況下,即不建立子類的情況下擴充套件已有物件的功能。

該模式有四個角色:

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

裝飾器模式

一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...