重複使用物件
任何物件模型的重要目標是讓物件作者重複使用和擴充其他人提供的物件,做為其本身實作的片段。 在 Microsoft Visual C++ 和其他語言中執行這項操作的其中一種方法是使用 實作繼承,這可讓物件從另一個對象繼承其某些函式,同時覆寫其他函式。
使用傳統實作繼承進行全系統對象互動的問題在於,未明確定義實作階層中對象之間的合約(介面)。 事實上,這是隱含和模棱兩可的。 當父物件或子對象變更其實作時,相關元件的行為可能會變成未定義或無法實作。 在任何單一應用程式中,實作都可以由同時更新所有元件的單一工程小組管理,這不一定是主要考慮。 在一個小組的元件是透過黑箱重複使用其他小組所建置的環境,這種不穩定會危及重複使用。 此外,實作繼承通常只能在進程界限內運作。 這使得傳統實作繼承對於由許多工程小組所建置的軟體元件所組成的大型、不斷演進的系統來說並不切實際。
建置可重複使用元件的關鍵是能夠將對象視為不透明方塊。 這表示嘗試重複使用另一個物件的程式代碼片段一無所知,而且不需要知道正在使用之元件的內部結構或實作。 換句話說,嘗試重複使用元件的程式代碼取決於對象的行為,而不是其確切的實作。
為了達到黑箱可重複使用性,COM 採用其他已建立的重複使用機制,例如 內含專案/委派 和 匯總。
注意
為了方便起見,重複使用的對象稱為 內部物件 ,而使用該內部對象的物件是 外部物件。
請務必記住這兩種機制,外部物件如何出現在其用戶端上。 就用戶端而言,這兩個對象都會實作用戶端可以取得指標的任何介面。 用戶端會將外部物件視為不透明方塊,因此並不在意,也不需要關心外部對象的內部結構。用戶端只關心行為。
如需詳細資訊,請參閱下列主題: