設計模式之裝飾器模式

2021-07-11 02:44:07 字數 1040 閱讀 5631

**定義:**decorator裝飾器,顧名思義,就是動態地給乙個物件新增一些額外的職責,就好比為房子進行裝修一樣。因此,裝飾器模式具有如下的特徵:

它必須具有乙個裝飾的物件。

它必須擁有與被裝飾物件相同的介面。

它可以給被裝飾物件新增額外的功能。

用一句話總結就是:保持介面,增強效能。

裝飾器通過包裝乙個裝飾物件來擴充套件其功能,而又不改變其介面,這實際上是基於物件的介面卡模式的一種變種。它與物件的介面卡模式的異同點如下。

相同點:都擁有乙個目標物件。

不同點:介面卡模式需要實現另外乙個介面,而裝飾器模式必須實現該物件的介面。

**例項如下:

//大聖的尊號

public

inte***ce

thegreatestsage

public

class

monkey

implements

thegreatestsage

}public

class

change

implements

thegreatestsage

public

void

move()

}public

class

fish

extends

change

@override

public

void

move()

}public

class

bird

extends

change

@override

public

void

move()

}public

class

client

}

從上面的**例子中可以看出,裝飾模式就是在原來的基礎上,再擴充套件功能,裝飾類通過實現原來功能的介面,然後再通過具體的裝飾類繼承這個裝飾類重寫裝飾類中的方法,這樣就擴充套件了功能。

設計模式之裝飾器模式

什麼是裝飾器模式 decorator 裝飾器模式的優點 裝飾器模式的缺點 示例 package com.pattern.decorator 抽象類,裝飾器的父類 author yjzhou public abstract class decorator implements component ov...

設計模式之裝飾器模式

裝飾模式 decorator 顧名思義,裝飾模式就是給乙個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項,關係圖如下 source類是被裝飾類,decorator類是乙個裝飾類,可以為source類動態的新增一些功能,如下 1.public ...

設計模式之裝飾器模式

package decorate 設計模式之裝飾器模式 動態給某個物件新增一些額外的職責。該模式涉及4個角色 1 介面或者是抽象類 abstract 2 需要被裝飾的物件 impl 實現介面或者繼承抽象類 3 裝飾類 decorate 也實現介面或者繼承抽象類 4 繼承裝飾類的子類 decorate...