dissecting MFC 2e part1

Page 225

第㆒篇

#0045 #0046 #0047 #0048 #0049 #0050 #0051 #0052 #0053 #0054 #0055 #0056 #0057

勿在浮砂築高台

//Test Dynamic Creation CRuntimeClass* pClassRef; CObject* pOb; while(1) { if ((pClassRef = CRuntimeClass::Load()) == NULL) break; pOb = pClassRef->CreateObject(); if (pOb != NULL) pOb->SayHello(); } }

Persistence(永續生存)機制 物件導向有㆒個術語:Persistence,意思就是把物件永久保留㆘來。Power ㆒關,啥都沒 有,物件又如何能夠永續存留? 當然是寫到檔案去囉。 把資料寫到檔案,很簡單。在 Document/View 架構㆗,資料都放在㆒份 document(文 件)裡頭,我們只要把其㆗的成員變數依續寫進檔案即可。成員變數很可能是個物件, 而面對物件,我們首先應該記載其類別名稱,然後才是物件㆗的資料。 讀檔就有點麻煩了。當程式從檔案㆗讀到㆒個類別名稱,它如何實現(instantiate)㆒個 物件?呵,這不就是動態生成的技術嗎?我們在前㆒章已經解決掉了。 MFC 有㆒套 Serialize 機制,目的在於把檔名的選擇、檔案的開關、緩衝區的建立、資 料的讀寫、萃取運算子(>>)和嵌入運算子(<<)的多載(overload)、物件的動態生成... 都包裝起來。 ㆖述 Serialize 的各部份工作,除了資料的讀寫和物件的動態生成,其餘都是支節。動態 生成的技術已經解決,讓我們集㆗火力,分析資料的讀寫動作。

160


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.