1. 程式人生 > >C++的多型與介面卡模式

C++的多型與介面卡模式

       原創文章,轉載請註明出處,謝謝!       
       作者:清林,部落格名:飛空靜渡

我們知道,c++的多型可以為不同的實現提供同一個介面,介面卡模式也可以讓同一介面得到不同的實現。下面我們通過一個例子來說明這兩個東東 :)

假設,我要設計一套對磁碟分割槽進行操作的類,這個類有三個介面,分別用於開啟磁碟,讀磁碟,寫磁碟和關閉開啟的磁碟。這裡,我們可以封裝系統對磁碟讀寫的函式。

在linux或unix下這些函式是:open、read、write和close。

在windows下,這些函式是:CreateFile、ReadFile、WriteFile和CloseHandle。

當對磁碟讀寫時,這兩套APIs是有很大差別的,一個大的差別是,windows下的這些函式對磁碟操作是以扇區為單位的。

現在,我們就用多型的方法來設計這個類,如下是這些類的虛擬碼:

 

如果要使用,就可能是這樣的:

 

上面所說的就是利用c++的多型來實現不同平臺的io操作。

但是,如果我已經做好了一個專案,這個專案是linux下的,並且我也不想改變程式碼並移植到wndows下呢,我們該對上面的程式碼如何改變。

下面使用介面卡模式來做:

現在我們已經有了linux下的這個操作類:

因此,我們同樣設計一個類似的針對wndows下的io類:

 

並且定義相應的介面卡類:

這樣,我們就可以這樣使用了

介面卡模式是在沒有改變程式碼的情況下,把各個功能封裝起來達到統一使用的功能。