1. 程式人生 > >"COM”:component object model,元件物件模型

"COM”:component object model,元件物件模型

這 是微軟為了解決程式碼重用的一個重要機制。重用程式碼的最簡單辦法是原始碼重用,把寫好的函式和類加到自己當前的程式碼中,編譯即可。簡單是簡單,敝病卻顯然的 多。另一個常用的方法是單獨做成模組,以DLL的形式分發,DLL匯出函式或者類,客戶程式用動態/靜態連結的方法將其載入,這顯然比前一種原始碼的方法 好一些,難度也不大,最為常用。但DLL也有一些不足,最根本的,它不是二進位制相容,DLL版本升級一次就需要與客戶程式程式碼重連結一次,有些時候這幾乎 是不可能的任務。為了更好地讓程式設計像“搭積木”一樣簡單,讓模組可以完美地配合,完美地替換,COM產生了。COM不是類庫,不是程式碼,不是作業系統的服 務,而是一套程式設計模型,理論上來說,它與語言無關,與作業系統無關,unix下同樣可以做COM。COM是一種程式結構模型標準,你做的DLL或EXE在 結構上滿足這麼一個標準,那這個DLL或EXE就是一個元件,它將在該平臺上成為二進位制相容。COM主要利用了登錄檔來登記本模組的資訊。客戶程式呼叫時 首先查登錄檔,找到所需元件的位置(這實現了位置透明),然後就用Loadlibrary把它載入進來,這和普通呼叫沒有本質區別,區別在於由於元件特殊 的實現方法使得整個過程中使用者程式都不知道元件的位置,元件的類的例項化過程,如何銷燬,不能直接訪問元件的任何實現細節,使用者只與元件的幾個 public介面打交道。這將實現真正的模組之間的獨立。對使用者程式而言,對於目標元件的認識,除了介面,一無所知。在介面不變的情況下,元件可任 意替 換而客戶程式不作任何改動,無需編譯,僅這一點,在中大型程式的模組整合的過程中就將節約相當多的時間。 "STL": Standard Template Library,標準模板庫
  這是最早由Alexander Stepanov和Meng Lee(蠻像中國人的名字)完成,於1994年提交給ANSI/ISO 標準C++委員 會並通過而成為標準C++的一部分。望文生義即可知這是一個程式碼庫標準,不是語法標準。簡單地說,STL是以C++中的模板語法為基礎建立起來的一套包含 基礎資料結構和演算法的程式碼庫。STL的特點是實現了“型別引數化”,即STL的程式碼中可處理任意自定義型別的物件,如果不使用模板技術的話,這是一件相當 困難的事。也因為這個原因,在最新的java及C#語法中均加入了對模板語法的支援,可見其重要性。另外一個有關STL重要的話題是GP (Generic Programming),泛型。這是與面向物件相併列的另外的一個程式設計模型,它以模板為基礎,弱化了實體型別的差異,簡化了程式設計時問 題抽象的模型,提供了更好的封裝性和彈性,對於繁雜的面向物件程式設計毫無疑問是一種解脫,至少是精神上的。GP並不是用來取代面向物件的,而是作為一個有益 的補充體,是面向物件很好的合作伙伴。GP是最近幾年軟體架構的一個研究熱點,但國內真正的應用似乎並不多見,這項技術本身還基本處於研究前沿。< <Modern C++ Design>>一書對C++中的GP應用有很好的詮釋,而這本書對腦細胞的殺傷力之大,也是其它C++書藉 望塵莫及的。想知道C++的程式碼技巧可以做到怎樣的出神入化嗎?不妨看看這本書。