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