[問題] Decorator Pattern的問題

看板java作者 (安卓發送)時間6年前 (2018/07/28 23:45), 編輯推噓0(007)
留言7則, 3人參與, 6年前最新討論串1/1
最近剛開始唸設計模式 但有些地方不確定理解得對不對 希望有大大能幫忙解答 剛唸了strategy, observor, decorator三個設計模式 但是對於「封裝變動」的部分還是不太懂 只知道主要概念是把「行為」獨立出來 實作上是program to interface/abstract class 讓Component可以實作需要的部分 目前有以下三個問題 1. 但是需要「封裝」的原因有哪些? 1. 直接繼承的話可能會需要實作不合理的方法 ex. Duck介面有fly()但橡膠鴨不會飛 2. 沒有彈性 有實際的例子嗎? 3. 其他好處 2. 如果「封裝」代表要program to interface,那decorator不是打臉了嗎? 書上說雖然decorator繼承自abstract class 但是並沒有使用他的方法 所以沒有違反「封裝變動的部分」原則 那strategy pattern把「行為」獨立出來的意義是...? 3. 既然decorator都繼承了abstract class 那為何還需要decorator這個介面? 直接讓decorator的實例繼承superclass(Component)不就好了? 如果有不清楚的地方 之後會再修改 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.122.89 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1532792719.A.B3C.html

07/30 09:51, 6年前 , 1F
你讀的是哪一本呢?
07/30 09:51, 1F

07/30 20:28, 6年前 , 2F
Head First設計模式
07/30 20:28, 2F

07/31 16:12, 6年前 , 3F
1. 設計模式是內功,有需要的時候就會需要
07/31 16:12, 3F

07/31 16:17, 6年前 , 4F
2.Strategy 主要是你也不知道會有哪些物件可以操作,
07/31 16:17, 4F

07/31 16:17, 6年前 , 5F
乾脆提供一個你可以呼叫的 interface 給其他人實作.
07/31 16:17, 5F

07/31 16:18, 6年前 , 6F
3. Decorator 通常是原始開發者沒有想到的情況,
07/31 16:18, 6F

07/31 16:18, 6年前 , 7F
以不破壞原本的創作, 繼承後去產生新的 interface.
07/31 16:18, 7F
文章代碼(AID): #1RN8-Fiy (java)
文章代碼(AID): #1RN8-Fiy (java)