當前位置: 首頁IT技術 → 架構基礎(Frameworks Fundamentals)

架構基礎(Frameworks Fundamentals)

更多

  Windows編程很適合面向對象編程,通過建立封裝通用Windows編程任務的類,一個程序員能編寫出更多的產品。例如,當封裝窗口不同任務的類建立以后,這個類就可以一遍一遍地應用,于是架構革命就開始了。

  New Term:架構(framework)是一個類的集合,這些類可以通過封裝常用編程技術簡化Windows編程,架構也稱為類庫(class libraries),封裝(Encapsulation)的意思是通過提供一個簡化的接口,把一個復雜的編程任務簡單化。

  普通的架構有封裝窗口、編輯框、列表框、圖形操作、位圖、滾動欄、對話框等類。

  為什么如此重視架構?

  其根本在于用架構使Windows編程比直接用C、匯編語言或Pascal語言更簡便。例如用C++編寫的加載和顯示一個位圖的代碼多達50多行,代碼看起來很嚇人,而采用VCL實現(xiàn)等價的功能的代碼:

  Image.LoadFromFile('winnt.bmp');

  由此看出你到底喜歡哪一種方式?甚至都不必知道這個代碼到底干什么的就可以作出決定。VCL的版本更短,并且可讀性更強。

  架構隱藏了不必知道的具體細節(jié),那個50多行的C++代碼中包含的每一件事情在VCL代碼中都在幕后完成了。當VCL工作時,不必知道幕后工作的每一個具體細節(jié),所有要知道就是構成架構的對象,以及把它們應用到程序中。

  一個好的架構要充分利用OOP,并且比其他的要利用的更好。Delphi中的Object Windows Library和Visual Component Library是面向對象編程的極好示例,它們?yōu)閿[脫忙亂,集中精力完成重要的編程任務提供了恰到好處的抽象提升。

  如果要使所有的東西都變得很容易的話,就一定要放棄一些東西,這時千真萬確的。由架構編寫的程序比用低級語言編寫的程序要大而且要慢,這只是部分正確,由架構編寫的應用程序不一定比其它語言編寫的程序慢。當然,用面向對象語言有一些額外的內部開銷,但絕大部分在一般的Windows程序中區(qū)別是不明顯的。

  初步趨向是由Delphi編寫的程序比用諸如C等語言編寫的程序要大。例如,假設一個簡單的Windows程序,由C編寫它是75KB,等價的程序用Delphi編寫可能是250KB,這看起來好像區(qū)別很大,但這個例子只說明了一種最壞的情況,在很小的程序中,C應用程序與架構編寫的Delphi應用程序其程序大小區(qū)別很大,但隨著程序的規(guī)模增加和復雜化,這兩者之間的區(qū)別就不太明顯了。

  程序大小不同的簡單原因之一就是程序語言與面向對象語言之間的不同,面向對象語言(C++和Object Pascal)要為一些功能增加額外的開銷,其性能諸如異常處理,運行時類型信息(RTTI)和其他OPP內容。其實代碼大小的不同于Object Pascal提供的性能交換是值得的。

  我也是很愿意犧牲一些代碼規(guī)模的大小來換取Object Pascal和VCL提供的強大功能。換句話說,一般不愿意花一個月的時間去編寫一個編譯成可執(zhí)行文件大小為100KB的Windows程序,而同樣的程序在Delphi只需要兩天時間,只是它編譯出來的可執(zhí)行文件大小為400KB,與節(jié)省開發(fā)時間相比,其結果的可執(zhí)行文件大小并不重要。

    用架構來引導面向對象編寫和設計

  如果把這種瘋狂玩意就叫做Windows編程的話,那么實際上也就等于終止了窺視架構的源代碼。遲早是要知道架構是怎么工作的。從VCL源代碼中可以得到這種信息。

  應該花一些時間來瀏覽一下VCL源代碼,開始時可能有點令人生畏,但看了一會后,就會看懂設計者在做什么,不要低估自己,用所學的知識最大限度地理解Object Pascal,把一些復雜難懂的內容先放下來,等以后再說。

  要注意VCL設計者是怎樣在類中使用私有的、保護的和公用的,注意應該不讓用戶知道的內容是怎樣從公眾的視線中隱藏起來的。研究VCL源代碼可以學會很多有關Object Pascal和面向對象設計方面的知識。

熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經過審核才能顯示)