PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 组合模式(Composite Pattern)到底是什么
楼主:
henry8168
(番薯猴)
2016-09-26 18:58:41
在FB的靠北工程师看到一篇文
https://goo.gl/u8dTYM
这种语法确实很冗长,然后看到留言有一个回复说要善用组合模式。
我就很好奇组合模式是什么,Google了一下,找到这4份网页,
http://www.one-tab.com/page/CRw70YIPR0Ky9az36aOG8Q
每一个都提到leaf、add、remove,但有看没有懂,
请问有高手能解释一下组合模式什么概念吗?
套用组合模式后,靠北工程师的那份Code又会变成怎样的?
希望能够让我听懂,200P将奉上给第一位解答者,感激不尽
作者:
chuegou
(chuegou)
2016-09-26 19:01:00
合成?
作者:
Caesar08
(Caesar)
2016-09-26 19:24:00
请善用TMP
作者:
pttworld
(批踢踢世界)
2016-09-26 19:32:00
later的考虑switch case的fallthrough,要很小心。
作者:
Caesar08
(Caesar)
2016-09-26 20:59:00
Template MetaProgramming的简称
作者:
tinlans
( )
2016-09-26 21:37:00
让全部的东西继承同一个 base,然后串成树状结构而已。compiler 的 AST 那类东西一般都能用这种结构做
作者:
bluesoul
(å¿™æ»ä½ è€çˆ¸)
2016-09-26 21:42:00
直觉想到是多型或是责任链
作者:
tinlans
( )
2016-09-26 21:43:00
至于为什么这东西可以解那问题,我也想不透 XD
作者:
bluesoul
(å¿™æ»ä½ è€çˆ¸)
2016-09-26 21:44:00
合成模式应该是用来表达层状结构的
作者:
tinlans
( )
2016-09-26 21:46:00
这鬼东西,一般的 factory + strategy 和基本多型概念就可以解了,FB 那下面不知道在反串什么
作者:
bluesoul
(å¿™æ»ä½ è€çˆ¸)
2016-09-26 21:50:00
我也觉得用错pattern
作者:
tinlans
( )
2016-09-26 21:51:00
不然就是那个“组合模式”是其它英文的中译还有其实这算 OOAD 板的范围,那边板主很伤心 XD
作者:
ilikekotomi
(Young)
2016-09-26 22:08:00
原来有OOAD板!! 等等去看一下
作者:
descent
(“雄辩是银,沉默是金”)
2016-09-26 22:09:00
你直接请他给一个 sample code 就好了。是不是嘴炮马上就知道了。解决这问题哪是这么简单劳一句话就好。
作者:
Caesar08
(Caesar)
2016-09-26 22:34:00
...时间复杂度???时间复杂度 这个词通常用在算法分析我是不知道那个方法写起来最好维护,但TMP肯定执行最快
作者:
bluesoul
(å¿™æ»ä½ è€çˆ¸)
2016-09-26 22:46:00
如果要快请参考map/hash + factory/command
http://tinyurl.com/ngqgddb
作者:
legendmtg
(CLANNAD)
2016-09-26 23:16:00
怎样看都不是composite pattern啊 decorator还比较有可能吧 而且原本的if就有问题了吧....
作者:
Caesar08
(Caesar)
2016-09-26 23:18:00
一样
作者:
tinlans
( )
2016-09-27 03:39:00
我比较疑惑的点是,如果 IS_OS_5_OR_LATER 等价于ver >= 5 的话,那后面的一大串 else if 到底在干嘛 XDFB 没交代清楚这点,可能要写过 iOS 程式的会知道吧。真的等价的话,else 之后判断 ver < 4 的范围才有意义。所以我在想,他讲的智障是不是更基本层面的问题..
作者:
pttworld
(批踢踢世界)
2016-09-27 06:53:00
如果不同人不同时期维护同一段程式是有可能的。不敢动逻辑宁可再开一条线出来,copy&paste来改。
继续阅读
Re: [问题] QT DESIGER产生CODE的地方
Serge45
[问题]跪求C语言三维动态阵列?????
hunkchen2000
[问题] 用dev c++ 算函数执行时间都是0
PINKs
[问题]请问C语言二为动态阵列输入字串
hunkchen2000
Makefile读档问题
cyysh4164
[问题] QT DESIGER产生CODE的地方
MOONY135
[问题] C语言字串扩张合并 内存管理问题
deo2000
[闲聊] CppCon的活动 SCM Challenge
Caesar08
[问题] template 编译错误
gigigigi
[问题] Qt CheckBox 按下去后更改本身的text
MOONY135
Links
booklink
Contact Us: admin [ a t ] ucptt.com