裝飾者模式和代理模式
裝飾者模式
- 名稱:Decorator
- 分類:結構型模式
- 意圖:動態(tài)的為目標對象增加功能澄阳,比繼承class碎赢,重寫方法更加的靈活速梗,體現(xiàn)了組合復用的原則
-
類圖:
- 關聯(lián)關系:裝飾者將目標對象組合到裝飾者對象中,裝飾者將請求轉(zhuǎn)發(fā)給目標對象峦嗤,只是會在目標對象處理前后做一些特定處理烁设。裝飾者對象不會中斷請求
- 優(yōu)點:
- 不用繼承就可以擴展對象的功能装黑,通過組合對象更加靈活的增強功能弓熏。
- 每一種裝飾類通常只提供一種特定的裝飾功能,符合單一職責疚颊。
- 缺點:
- 出問題不易調(diào)試信认。如果new BufferedInputStream(new FileInputStream())
- 例子:
- JDK中的I/O類體系結構
- Shiro中的一系列Request對象
代理模式
- 名稱:Proxy
- 分類:結構型模式
- 意圖:為其他對象提供一種代理來控制對目標對象的訪問
-
類圖:
- 關聯(lián)關系:代理根據(jù)其種類嫁赏,在適當?shù)臅r候向RealSubject轉(zhuǎn)發(fā)請求(并不是無條件的轉(zhuǎn)發(fā))
- 例子:
- JDK中的RMI
- Spring的AOP實現(xiàn)