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