C_and_CPP 板


LINE

在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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1474887527.A.E65.html
1F:→ chuegou: 合成? 09/26 19:01
好像也有稱作合成模式的
2F:→ Caesar08: 請善用TMP 09/26 19:24
TMP是...?
3F:→ pttworld: later的考慮switch case的fallthrough,要很小心。 09/26 19:32
組合模式就是改成switch嗎? ※ 編輯: henry8168 (58.115.109.218), 09/26/2016 20:16:55
4F:→ Caesar08: Template MetaProgramming的簡稱 09/26 20:59
5F:→ tinlans: 讓全部的東西繼承同一個 base,然後串成樹狀結構而已。 09/26 21:37
6F:→ tinlans: compiler 的 AST 那類東西一般都能用這種結構做 09/26 21:37
感恩,P幣已送出。繼續討論吧
7F:→ bluesoul: 直覺想到是多型或是責任鏈 09/26 21:42
8F:→ tinlans: 至於為什麼這東西可以解那問題,我也想不透 XD 09/26 21:43
9F:→ bluesoul: 合成模式應該是用來表達層狀結構的 09/26 21:44
10F:→ tinlans: 這鬼東西,一般的 factory + strategy 和基本多型概念 09/26 21:46
11F:→ tinlans: 就可以解了,FB 那下面不知道在反串什麼 09/26 21:47
12F:→ bluesoul: 我也覺得用錯pattern 09/26 21:50
13F:→ tinlans: 不然就是那個「組合模式」是其它英文的中譯 09/26 21:51
14F:→ tinlans: 還有其實這算 OOAD 板的範圍,那邊板主很傷心 XD 09/26 21:52
15F:→ ilikekotomi: 原來有OOAD板!! 等等去看一下 09/26 22:08
16F:→ descent: 你直接請他給一個 sample code 就好了。 09/26 22:09
17F:→ descent: 是不是嘴炮馬上就知道了。 09/26 22:09
18F:→ descent: 解決這問題哪是這麼簡單勞一句話就好。 09/26 22:10
我轉到OOAD板一起問好了,合成模式我查到的也都是樹狀結構相關的東西, 可能是那留言在嘴砲吧XD" 所以那一連串的if else的code,還有不同寫法讓版面繼續縮減嗎? ※ 編輯: henry8168 (58.115.109.218), 09/26/2016 22:33:18 henry8168:轉錄至看板 OOAD 09/26 22:34
19F:→ Caesar08: ...時間複雜度??? 09/26 22:34
就讓電腦可以比較有效率判斷執行版本的寫法,不用一個一個詢問 @@" ※ 編輯: henry8168 (58.115.109.218), 09/26/2016 22:35:36
20F:→ Caesar08: 時間複雜度 這個詞通常用在演算法分析 09/26 22:38
抱歉,已修改 ※ 編輯: henry8168 (58.115.109.218), 09/26/2016 22:39:39
21F:→ Caesar08: 我是不知道那個方法寫起來最好維護,但TMP肯定執行最快 09/26 22:40
我正在看https://goo.gl/vrD71Y 看不太懂 enum { value = N * Factorial<N - 1>::value }; 和一般enum不太一樣?
22F:→ bluesoul: 如果要快請參考map/hash + factory/command 09/26 22:46
23F:→ bluesoul: http://tinyurl.com/ngqgddb 09/26 22:47
只用過hash map,還在研究factory/command, 然後switch好像比較被推來取代if else? ※ 編輯: henry8168 (58.115.109.218), 09/26/2016 23:16:14
24F:推 legendmtg: 怎樣看都不是composite pattern啊 decorator還比較有 09/26 23:16
25F:→ legendmtg: 可能吧 而且原本的if就有問題了吧.... 09/26 23:16
26F:→ Caesar08: 一樣 09/26 23:18
我看懂了,原來是template的進階應用XDD,感恩 ※ 編輯: henry8168 (58.115.109.218), 09/26/2016 23:26:28
27F:→ tinlans: 我比較疑惑的點是,如果 IS_OS_5_OR_LATER 等價於 09/27 03:39
28F:→ tinlans: ver >= 5 的話,那後面的一大串 else if 到底在幹嘛 XD 09/27 03:39
29F:→ tinlans: FB 沒交代清楚這點,可能要寫過 iOS 程式的會知道吧。 09/27 03:40
30F:→ tinlans: 真的等價的話,else 之後判斷 ver < 4 的範圍才有意義。 09/27 03:40
31F:→ tinlans: 所以我在想,他講的智障是不是更基本層面的問題.. 09/27 03:41
32F:→ pttworld: 如果不同人不同時期維護同一段程式是有可能的。 09/27 06:53
33F:→ pttworld: 不敢動邏輯寧可再開一條線出來,copy&paste來改。 09/27 06:54







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP