注:晚捆綁(late binding)可能來自c++ 閱讀全文
posted @ 2009-02-12 16:08 lymons 閱讀(2851) | 評(píng)論 (5) 編輯 |
|
|||
02 2009 檔案 摘要: 函數(shù)指針提供了一些極其有趣,有效和絕妙的編程技術(shù)。你能用它代替switch/if語句來實(shí)現(xiàn)你自己的晚綁定(late-binding)或者作為回調(diào)(callback)來使用。不幸的是–可能由于它的語法比較復(fù)雜–幾乎所有的電腦書籍和文檔上都講解的不多。即便如此,它們也只是做了相當(dāng)簡(jiǎn)單和膚淺的說明。而對(duì)于函數(shù)指針你只需要明白它是什么以及它的語法,因?yàn)樗鸵话愕闹羔槺绕饋韽膩聿挥藐P(guān)心內(nèi)存的分配和釋放,所以它被使用的時(shí)候是不易產(chǎn)生錯(cuò)誤的。但你要注意的是: 要時(shí)常問自己是否真的需要函數(shù)指針。因?yàn)殡m然用它來實(shí)現(xiàn)晚綁定也很漂亮,但用既存的C++數(shù)據(jù)結(jié)構(gòu)的話會(huì)使代碼更可讀和更簡(jiǎn)潔。另外,晚綁定的一方面實(shí)際上就是運(yùn)行期(runtime): 如果你調(diào)用了一個(gè)虛擬函數(shù),你的程序會(huì)根據(jù)一個(gè)存儲(chǔ)所有函數(shù)的虛擬表(V-Table)自己來確定到底真正調(diào)用的是哪一個(gè)。這就要花費(fèi)一些時(shí)間而用函數(shù)指針代替虛擬函數(shù)的話有可能會(huì)節(jié)省一些時(shí)間。BTW: 現(xiàn)代的編譯器在這方面都做得非常好!就那我的Borland編譯器來說這個(gè)時(shí)間就比調(diào)用一次虛擬函數(shù)能節(jié)省2%。
注:晚捆綁(late binding)可能來自c++ 閱讀全文 posted @ 2009-02-12 16:08 lymons 閱讀(2851) | 評(píng)論 (5) 編輯 | posted @ 2009-02-02 13:08 lymons 閱讀(2072) | 評(píng)論 (0) 編輯 | 摘要: bstract factory:為創(chuàng)建相互關(guān)聯(lián)(風(fēng)格類似)的一系列的對(duì)象提供了一個(gè)通用接口,而不需要指定具體的類(產(chǎn)品)名。
factory method:定義一個(gè)用來創(chuàng)建對(duì)象的接口,并讓子類來決定實(shí)例化哪一個(gè)具體的類(產(chǎn)品),從而讓具體類的實(shí)例化延遲到子類。 他們的主要區(qū)別在于,abstract factory強(qiáng)調(diào)的是把諾干個(gè)產(chǎn)品按照風(fēng)格進(jìn)行分類, 為相同風(fēng)格的一系列對(duì)象(產(chǎn)品)提供一個(gè)工廠類,因此,只要改變工廠類的實(shí)例,就能到達(dá)改變這一組產(chǎn)品的風(fēng)格和外觀。而這一風(fēng)格的產(chǎn)品的生產(chǎn)可以利用工廠方法來實(shí)現(xiàn). 這其中, factory method強(qiáng)調(diào)的則是先在父類實(shí)現(xiàn)創(chuàng)建對(duì)象的行為,具體的行為或者具體對(duì)象(產(chǎn)品)的實(shí)例化則延遲到子類實(shí)現(xiàn)。 閱讀全文 posted @ 2009-02-02 12:58 lymons 閱讀(669) | 評(píng)論 (0) 編輯 | posted @ 2009-02-02 12:54 lymons 閱讀(1258) | 評(píng)論 (1) 編輯 | posted @ 2009-02-02 12:52 lymons 閱讀(433) | 評(píng)論 (0) 編輯 | posted @ 2009-02-02 12:47 lymons 閱讀(810) | 評(píng)論 (0) 編輯 | posted @ 2009-02-02 12:31 lymons 閱讀(4771) | 評(píng)論 (0) 編輯 | posted @ 2009-02-02 11:58 lymons 閱讀(1155) | 評(píng)論 (0) 編輯 | posted @ 2009-02-02 11:52 lymons 閱讀(1885) | 評(píng)論 (0) 編輯 | posted @ 2009-02-02 11:28 lymons 閱讀(543) | 評(píng)論 (0) 編輯 | 摘要: 「Code Reading―從開源里學(xué)習(xí)軟件開發(fā)的技法」有這樣一本書。我是這本書日本版的譯者, 呵呵有點(diǎn)王婆賣瓜---自賣自夸的感覺,但是把讀源代碼作為主題的在市面還沒有其他的書。我認(rèn)為這是一本網(wǎng)羅了從技法到工具,數(shù)據(jù)結(jié)構(gòu),構(gòu)架,還有利用代碼的實(shí)際讀法的實(shí)例的好書。
照片1●「Code Reading―跟著開源來學(xué)習(xí)軟件的開發(fā)技法」 這本書的前言里,編程高手Dave Thomas寫下了下面的話。 沒有研讀過其他作家作品的偉大作家,沒有研究過其他畫家筆法的偉大畫家,沒有盜取過并肩作戰(zhàn)的同事的技術(shù)的技巧高明的外科醫(yī)生,沒有在副駕駛的位置積累實(shí)際經(jīng)驗(yàn)的波音767的機(jī)長(zhǎng),在現(xiàn)實(shí)生活中真的會(huì)存在他們這樣的人嗎? 閱讀全文 posted @ 2009-02-01 15:54 lymons 閱讀(5665) | 評(píng)論 (0) 編輯 | posted @ 2009-02-01 15:41 lymons 閱讀(1489) | 評(píng)論 (1) 編輯 |
|
|||