設計模式之裝飾器模式 各種功能隨意擴充套件

2021-10-05 18:43:38 字數 1837 閱讀 7907

裝飾器模式是靈活給原有類裝飾新功能。

動態的給物件新增額外職責,就增加功能來說,裝飾模式比生成子類更為靈活。

如果你需要新增一些額外的功能,再不修改原有類的基礎上,給原有類套個殼。並且可以套多個殼,我覺得裝飾器模式有點像中介軟體。

比如你現在有乙個登入的功能。

可以使用裝飾器模式。

/**

* 裝飾器模式

* 裝飾器父類

*/class

decorate

function

login()

}/**

* 裝飾器模式

* 許可權裝飾器

*/class

loginauth

extends

decorate

}/**

* 裝飾器模式

* 登入日誌裝飾器

*/class

loginlog

extends

decorate

}/**

* 裝飾器模式

*/class

loginwechat

extends

decorate

}

下面是原來的登入功能

/**

* 裝飾器模式

* 核心**

* 登入功能

*/class

login

}

原來的客戶端直接呼叫login,只有登入功能。

$login

=new

login()

;$login

->

login()

;

增加了裝飾器以後可以把登入功能放入裝飾器。

$login

=new

login

;//使用許可權裝飾器

$login

=new

loginauth

($login);

//使用登入日誌裝飾器

//使用登入日誌裝飾器

$login

=new

loginlog

($login);

//使用許可權裝飾器

這個模式就非常靈活,可以任意組裝自己的裝飾,比如購買支付的時候,需要裝飾積分發放,賬單通知這些。而且每個裝飾器的職責單一,方便插拔,如果不需要乙個裝飾器的時候把這個裝飾器去掉就可以了。

**放在了我的github上面。

設計模式之裝飾器模式

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

設計模式之裝飾器模式

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

設計模式之裝飾器模式

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