平行的類層次結構

2021-06-07 00:24:58 字數 1110 閱讀 2543

本文摘自:

一、什麼是平行的類層次結構

簡單點說,

假如有兩個類層次結構,其中乙個類層次中的每個類在另乙個類層次中都有乙個對應的類的結構,就被稱為平行的類層次結構。

舉個例子來說,硬碟物件有很多種,如分成台式電腦硬碟和筆記本硬碟,在台式電腦硬碟的具體實現上面,又有希捷、西數等不同品牌的實現,同樣在筆記本硬碟上,也有希捷、日立、ibm等不同品牌的實現;硬碟物件具有自己的行為,如硬碟能儲存資料,也能從硬碟上獲取資料,不同的硬碟物件對應的行為物件是不一樣的,因為不同的硬碟物件,它的行為的實現方式是不一樣的。如果把硬碟物件和硬碟物件的行為分開描述,那麼就構成了如圖1所示的結構:

圖1 平行的類層次結構示意圖

硬碟物件是乙個類層次,硬碟的行為這邊也是乙個類層次,而且兩個類層次中的類是對應的。台式電腦西捷硬碟物件就對應著硬碟行為裡面的台式電腦西捷硬碟的行為;筆記本ibm硬碟就對應著筆記本ibm硬碟的行為,這就是一種典型的平行的類層次結構。

這種平行的類層次結構用來幹什麼呢?主要用來把乙個類層次中的某些行為分離出來,讓類層次中的類把原本屬於自己的職責,委託給分離出來的類去實現,從而使得類層次本身變得更簡單,更容易擴充套件和復用。

一般來講,分離出去的這些類的行為,會對應著類層次結構來組織,從而形成乙個新的類層次結構,相當於原來物件的行為的這麼乙個類層次結構,而這個層次結構和原來的類層次結構是存在對應關係的,因此被稱為平行的類層次結構。

二、工廠方法模式跟平行的類層次結構的關係

可以使用

工廠方法模式

來連線平行的類層次。

看上面的示例

圖1,在每個硬碟物件裡面,都有乙個工廠方法createhdoperate,通過這個工廠方法,客戶端就可以獲取乙個跟硬碟物件相對應的行為物件。在硬碟物件的子類裡面,會覆蓋父類的工廠方法createhdoperate,以提供跟自身相對應的行為物件,從而自然的把兩個平行的類層次連線起來使用。

關於《工廠方法模式(factory method pattern)理論篇》和《

工廠方法模式(factory method pattern) 應用篇

類的層次結構

對於在不同的作用域宣告的識別符號,可見性原則是 如果存在兩個或則多個具有包含關係的作用域,外層宣告的識別符號如果沒有在內層宣告,則他在內層任然可見 如果內層宣告了同名識別符號,則外層識別符號在內層不可見,這時稱內層變數覆蓋了外層同名變數,這種現象叫同名覆蓋。在類的派生層次結構中,基類的成員和派生類新...

C 類層次結構

在乙個繼承圖里,每個名字用virtual刻畫的基類,將總是用這個類的同乙個物件表示。在另一方面,沒有用virtual描述的每個基類都有定義自己的子物件去表示它 class b class xx b b是私有基類 struct yy b b是公有基類 第一 private,public,protect...

WPF類層次結構

wpf類層次結構 system.threading.dispatcherobject類 wpf應用程式使用sta single thread affinity 模型,整個使用者介面由乙個單獨的執行緒擁有,從另乙個執行緒和使用者介面元素進行互動是不安全的。通過繼承自dispatcherobject類,...