裝飾模式 Decorator:動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更爲靈活。
動態地爲一個對象增加新的功能,一種用於代替繼承的技術,無需通過繼承增加子類就能擴展對象的新功能;使用對象的關聯關係代替繼承關係,更加靈活,同時避免類型體系的快速膨脹。
裝飾模式decorator,也叫包裝器模式wrapper;
降低系統耦合度,可以動態的增加或刪除對象的職責,並使得需要裝飾的具體構件類和具體裝飾類可以獨立變化,以便增加新的具體構件類和具體裝飾類;
優點:
- 擴展對象功能,不會導致類個數急劇增加;
- 可以對一個對象多次裝飾,創造不同的行爲組合;
- 具體構件類/裝飾類獨立變化;
缺點:
- 易於出錯,調試排查比較麻煩;
- 產生很多小對象,大量小對象佔據內存,一定程度影響性能;
GitLab項目地址:
https://git.lug.ustc.edu.cn/hellboy0621/transformer_gof23.git