程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 的接口(1) - 前言

Delphi 的接口(1) - 前言

編輯:Delphi
 

之前, 有朋友誇過我: 博文通俗易懂, 能把復雜的問題簡單化;

  希望我對接口的理解也能對大家有所幫助; 不過其中個人理解的成分多些, 錯誤之處萬望指出.

  "接口" 的概念和 "類" 特別是 "抽象類" 近似, Delphi 之初並沒有接口, 後來(Delphi 3)為了支持 COM 引入了接口, 再後來發展成為 Delphi 重要的語言特性.

  應該先簡單了解點 COM, 說到 COM, 能讓我想到 "有心栽花花不活, 無意插柳柳成蔭" 的古話.

  微軟在開發 OLE 時, 有一種需求: 使用其他程序中的對象, 這種需求導致了 COM 的誕生並發揚光大, 而 OLE 卻在慢慢地銷聲匿跡.

  從 COM 到 COM+, 之後好像微軟並沒有再大力發展(可能是把精力都放到 Net 上去了, 但 Net 也沒離開 COM), 它現在仍有著非常廣泛的應用, 這應該得益於它先進的思想.

  慢慢道來:

  1、一個二進制的 1 或 0, 這是任何語言都可以識別的;

  2、一個字符, 也是任何語言都可以識別的;

  3、一個整形變量, 也是任何語言都可以識別的;

  4、一個結構體, 也是任何語言都可以識別的;

  5、一個函數也沒有問題, 譬如 Delphi 調用 API;

  6、但一個 "對象" 或著 "類" 呢? 這在跨程序、跨語言時就不好識別了.

  COM 解決了這個問題! 並進而應用於網絡.

  COM 規定了一個二進制的標准, 這個標准主要針對 "對象方法的聲明"(也就是接口), 同時把聲明(接口)和實現分開.

  不同的語言都可以來實現這個接口、同時不同的語言(在遵循標准的情況下)也都能識別這個接口, 從而實現的跨語言的對象的交互.

  現在看看這個過程其實是水到渠成、挺自然的; 但好像當初微軟的 COM 之路也並不平坦.

  微軟通過 COM 組件的方式提供了很多功能, 它們很可能是用 C++ 實現的, 我們用 Delphi 可以很好的使用, 本質上說就是 Delphi 遵循了那個二進制的標准; 相反, Delphi 按這個標准聲明、並用自己的語言實現的 COM 組件也能供其他語言使用.

  一個 COM 組件裡有什麼呢?

  主要是一堆接口(也就是聲明)和接口的實現, 每個接口對應一個計數器, 另包含一個叫 "類廠" 的東西.

  使用 COM 步驟可能是這樣的:

  1、程序在使用組件之初, 先聯系 "接口"; 這應該是從注冊表中查詢.

  2、找到後, 如果此接口還沒有被實現, 馬上調用 "類廠" 建立起對象, 並同時給接口計數器加 1.

  3、可能會不止一個程序在使用同一個接口, 但每有使用則 "計數器+1", 每次用完則 "計數器-1".

  4、當接口的使用計數為 0 時, 系統自動釋放類廠為該接口建立的對象(垃圾回收機制).

  我們 Delphi 中的接口當然也是這樣, 用完會自動釋放, 無需手動 free.

  接口在 Delphi 中繼續支持著 COM 並繼續完善著, 接下來要討論的是作為語言特性的 "接口" 概念與使用.

  我曾經被 "接口" 置於雲霧之中, 一些書也讓人越看越糊塗; 明白了以後發現其實挺簡單的, 相比 "類" 的規則要簡單許多.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved