裝飾模式 Decorator

2021-09-01 21:46:49 字數 1306 閱讀 9982

裝飾模式可以給乙個物件動態的新增一些額外的職責(通過裝載兄弟類物件的方式)。就增加功能來說,裝飾模式比生成子類更加靈活。

接下來我舉乙個例子:

finery類是person類的子類。

bigtrouser類和tshirt類是 finery類的子類。

現在想給bigtrouser類的物件 新增穿tshirt的功能,就要採用裝飾模式。

先上**:

package

com.wjy.decorator;

public

class

person

public

person(string name)

public

void

show()

}

package

com.wjy.decorator;

public

class finery extends

person

@override

public

void

show()

}}

package

com.wjy.decorator;

public

class tshirts extends

finery

public

void

show()

}

package

com.wjy.decorator;

public

class bigtrouser extends

finery

public

void

show()

}

在main方法中是這樣呼叫的:

package

com.wjy.decorator;

public

class

start

}

如上所示:bigtrouser類的物件將tshirt類的物件包含在自己聚合的person物件中,這樣在bigtrouser類的處理**中呼叫super.處理函式();而在bigtrouser類和tshirt類的共同的父類中的 處理函式是這樣寫的 component.處理函式(); 就是說要呼叫 bigtrouser物件中聚合的person物件(就是tshirt的物件)的處理方法,這樣一來,bigtrouser物件一呼叫方法實質上是先呼叫了tshirt類的處理方法,再呼叫自己的處理方法。這樣一來就使得這個bigtshirt物件擁有了處理tshirt的功能。

裝飾模式 Decorator

裝飾模式 decorator 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。其中component定義了乙個物件介面,可以給這些物件動態的新增職責 concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責 decorator裝飾抽象類,...

Decorator 裝飾模式

定義 動態的給乙個物件新增一些輔助功能,而不改變原有的類。案例 假如現在有個文字控制項textview,它可以在螢幕上顯示文字,但當文字過多的時候,乙個螢幕顯示不下,這時就需要給它新增乙個滾動條。給乙個視窗加乙個滾動條不是原有的功能,而是額外的功能,比如還可以加乙個黑色外框,而且這些操作不是為某乙個...

裝飾模式 Decorator

裝飾模式 decorator 1.裝飾模式 decorator 的定義 又名包裝 模式,裝飾模式以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案。2.裝飾模式以對客戶端透明的方式動態的給乙個物件附加上更多的責任。換言之客戶端並不會覺的物件在裝飾前和裝飾後有什麼區別。3.裝飾模式可以在...