裝飾器模式

2021-10-07 23:37:54 字數 1295 閱讀 7603

當我們建立了乙個類後,我們可能需要為其新增一些功能,而這些功能又往往會是多個這樣的類都需要的。如果我們仍然使用傳統的建立子類的方法,必然導致許多**被一次次的重複書寫,而且即使在我們完成這些類後,很難對其進行修改。

既然新建子類的方法太過死板,我們就考慮是否可以將這些新的功能「摘」出來,變成乙個個零件,當我們需要他的時候便將其加在我們的類上,這樣之後我們如果需要改變功能,也只需要改變零件,不需要對我們的類重寫。

這樣我們就想到了裝飾器模式。介面卡模式的關鍵就是通過乙個抽象類,實現我們所要新增功能的介面,同時在這個抽象類的構造方法中引入乙個具體實現所需要的類的引數,最後通過乙個子類實現抽象類,為其新增方法。

舉例來講,我們想建立乙個動物類的介面,使用兔子類和烏龜類實現他,兔子和烏龜都擁有移動的屬性,但兔子跑得快,我們想通過介面卡模式為兔子新增快的屬性,這樣當我們換成與獵豹比較時,就可以再將這個快的屬性賦予獵豹。

首先我們建立動物介面

public

inte***ce

animal

然後是兔子與烏龜類:

public

class

rabbit

implements

animal

}public

class

tortoise

implements

animal

}

接著建立介面卡類

public

abstract

class

animaldecorator

implements

animal

public

void

move()

最後實現介面卡類:

public

class

fastmove

implements

animal

@override

public

void

move()

當我們需要乙個跑的快的兔子時,我們就可以使用介面卡宣告這個變數:

animaldecorator fastrabbit =

newfastmove

(new

rabbit()

);fastrabbit.

move()

;

這樣當我們使用move方法時,就不只有兔子move的方式,還有快的屬性。

裝飾器模式

大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...

裝飾器模式

裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...

裝飾器模式

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