在日常開發(fā)工作中,適當的使用一些設計模式,可以讓代碼擴展性更強,能更好地擁抱變化,讓代碼更加優(yōu)雅。本文主要介紹設計模式中的裝飾模式,并附上測試示例 Demo 供大家參考。
定義
裝飾模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝。
個人理解
裝飾模式可以在運行時,在不修改原有代碼的前提下,動態(tài)地為對象添加或移除指定的業(yè)務邏輯,比起繼承,采用裝飾模式讓代碼更據擴展性,更為靈活,避免了繼承導致的代碼耦合。
裝飾模式的設計理念是:對修改關閉,對擴展開放;面對接口編程。
示例介紹
個人有時間會自己煮湯(這不是重點哈,只是剛好有這么一個場景適合采用裝飾模式,因此也就拿來做例子了),在煮湯的過程中,我們需要添加不同的食材,就拿涼瓜排骨湯來說吧,需要的食材有排骨、涼瓜、大豆、食用鹽、水等,當然根據不同人的不同喜好,可以添加其他的食材。以上說到的這些食材都是制作“涼瓜排骨湯”所必須的,沒有它們的點綴,湯喝起來也就不是那個味道了,這里的點綴我們可以理解為裝飾,是食材裝飾了“涼瓜排骨湯”,也就是說食材是裝飾者,而“涼瓜排骨湯”是被裝飾的對象。UML 圖如下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數據結構來看看(二) 2017-07-26
