[問題] 組合模式(Composite Pattern)到底是什麼
在FB的靠北工程師看到一篇文
https://goo.gl/u8dTYM
這種語法確實很冗長,然後看到留言有一個回覆說要善用組合模式。
我就很好奇組合模式是什麼,Google了一下,找到這4份網頁,
http://www.one-tab.com/page/CRw70YIPR0Ky9az36aOG8Q
每一個都提到leaf、add、remove,但有看沒有懂,
請問有高手能解釋一下組合模式什麼概念嗎?
套用組合模式後,靠北工程師的那份Code又會變成怎樣的?
希望能夠讓我聽懂,200P將奉上給第一位解答者,感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.109.218
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1474887527.A.E65.html
→
09/26 19:01, , 1F
09/26 19:01, 1F
好像也有稱作合成模式的
→
09/26 19:24, , 2F
09/26 19:24, 2F
TMP是...?
→
09/26 19:32, , 3F
09/26 19:32, 3F
組合模式就是改成switch嗎?
※ 編輯: henry8168 (58.115.109.218), 09/26/2016 20:16:55
→
09/26 20:59, , 4F
09/26 20:59, 4F
→
09/26 21:37, , 5F
09/26 21:37, 5F
→
09/26 21:37, , 6F
09/26 21:37, 6F
感恩,P幣已送出。繼續討論吧
→
09/26 21:42, , 7F
09/26 21:42, 7F
→
09/26 21:43, , 8F
09/26 21:43, 8F
→
09/26 21:44, , 9F
09/26 21:44, 9F
→
09/26 21:46, , 10F
09/26 21:46, 10F
→
09/26 21:47, , 11F
09/26 21:47, 11F
→
09/26 21:50, , 12F
09/26 21:50, 12F
→
09/26 21:51, , 13F
09/26 21:51, 13F
→
09/26 21:52, , 14F
09/26 21:52, 14F
→
09/26 22:08, , 15F
09/26 22:08, 15F
→
09/26 22:09, , 16F
09/26 22:09, 16F
→
09/26 22:09, , 17F
09/26 22:09, 17F
→
09/26 22:10, , 18F
09/26 22:10, 18F
我轉到OOAD板一起問好了,合成模式我查到的也都是樹狀結構相關的東西,
可能是那留言在嘴砲吧XD"
所以那一連串的if else的code,還有不同寫法讓版面繼續縮減嗎?
※ 編輯: henry8168 (58.115.109.218), 09/26/2016 22:33:18
※ henry8168:轉錄至看板 OOAD 09/26 22:34
→
09/26 22:34, , 19F
09/26 22:34, 19F
就讓電腦可以比較有效率判斷執行版本的寫法,不用一個一個詢問 @@"
※ 編輯: henry8168 (58.115.109.218), 09/26/2016 22:35:36
→
09/26 22:38, , 20F
09/26 22:38, 20F
抱歉,已修改
※ 編輯: henry8168 (58.115.109.218), 09/26/2016 22:39:39
→
09/26 22:40, , 21F
09/26 22:40, 21F
→
09/26 22:46, , 22F
09/26 22:46, 22F
→
09/26 22:47, , 23F
09/26 22:47, 23F
只用過hash map,還在研究factory/command,
然後switch好像比較被推來取代if else?
※ 編輯: henry8168 (58.115.109.218), 09/26/2016 23:16:14
推
09/26 23:16, , 24F
09/26 23:16, 24F
→
09/26 23:16, , 25F
09/26 23:16, 25F
→
09/26 23:18, , 26F
09/26 23:18, 26F
我看懂了,原來是template的進階應用XDD,感恩
※ 編輯: henry8168 (58.115.109.218), 09/26/2016 23:26:28
→
09/27 03:39, , 27F
09/27 03:39, 27F
→
09/27 03:39, , 28F
09/27 03:39, 28F
→
09/27 03:40, , 29F
09/27 03:40, 29F
→
09/27 03:40, , 30F
09/27 03:40, 30F
→
09/27 03:41, , 31F
09/27 03:41, 31F
→
09/27 06:53, , 32F
09/27 06:53, 32F
→
09/27 06:54, , 33F
09/27 06:54, 33F