設計模式之裝飾器模式

2021-10-04 00:09:24 字數 1314 閱讀 5171

允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝.

裝飾器模式是動態地給乙個物件新增一些額外的職責。也可說是繼承的替代.

我們用乙個案例來說明:

手機都有接**的功能. 我們現在要在接**之前給手機新增乙個彩鈴的功能.

功能介面

具體功能的類

抽象裝飾

具體裝飾

1, 功能介面

/**

* 通用的功能介面

*/public

inte***ce

called

2,具體功能的類

/**

* 具體的產品

*/public

class

phone

implements

called

}

3, 抽象裝飾類

/**

* 抽象的裝飾類,具體的裝飾類都可以繼承這個類.

*/public

abstract

class

abstractdecorate

implements

called

@override

public

void

answer()

}

4, 具體裝飾類

/**

* 具體的裝飾類

*/public

class

ringdecorate

extends

abstractdecorate

@override

public

void

answer()

//擴充套件的方法

public

void

ring()

}

5, 測試類

public

static

void

main

(string[

] args)

輸出:

開始裝飾...

開始聽鈴聲.

. 接**.

..

裝飾(decorator)模式的主要優點有:

其主要缺點是:

設計模式之單例模式

設計模式之構造者模式

設計模式之工廠模式

設計模式之抽象工廠模式

設計模式之裝飾器模式

定義 decorator裝飾器,顧名思義,就是動態地給乙個物件新增一些額外的職責,就好比為房子進行裝修一樣。因此,裝飾器模式具有如下的特徵 它必須具有乙個裝飾的物件。它必須擁有與被裝飾物件相同的介面。它可以給被裝飾物件新增額外的功能。用一句話總結就是 保持介面,增強效能。裝飾器通過包裝乙個裝飾物件來...

設計模式之裝飾器模式

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

設計模式之裝飾器模式

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