1.在設計乙個類時,可能會不自覺地與它的實現相聯絡(譬如,這個介面我這樣設計,功能是否能最終實現?).這是乙個很基本的錯誤.
設計時要把抽象與實現分離。理由很簡單,一是簡化了類的抽象,忽略對當前設計目的來說不重要的屬性或特性,如飛機駕駛培訓系統的飛機類,就可以忽略飛機的客艙內部布置;二是把抽象與實現分現,將使抽象的實現更靈活。如飛機的起降控制,只需提供兩個介面,具體起飛控制流程和降落控制流程並不需要涉及。又如,酒店預訂系統的房間類,可以不考慮房間的裝修時間,室內陳設的新舊程度,提供退房介面,也不關心退房的具體流程。
2.介面要最小化.通常,乙個完美的類應該包含下面這些成員1~6。但是這不是所有類必須的,如果不需要,或者根本就是累贅,最好不要提供,下面一一舉例說明。
1) 預設建構函式 :
class pool
如果提供了預設構造,則無法確定所分配物件的預設大小。
2) 拷貝建構函式
如c++語法解析器類parser,由於具有大量內部資料結構,因此要想正確的拷貝它,將是非常不易的,也是不值得的。
3)相等運算子
如乙個程式執行過程中,該類只有乙個例項,顯然,該類的相等運算子就有些多餘。
4) 基本的賦值運算子
class pool {
public :
pool& operator=( const pool& q);
我覺得原文作者關於這一點有些不對,實際上他列舉的例子問題根結在於賦值前沒有刪除原有指標記憶體。
5) 析構函式
有些時候,不允許呼叫析構。這時候,我們就可以宣告私有的析構(只能在堆上建立,又不能調delete刪除)。
3. 注意深拷貝與淺拷貝,有些時候的影響將是災難性的。
5.介面一致性
6.轉型
某些隱式轉型是不受歡迎的。要加以約束。或使用explicit
7.最大限度使用const關鍵字來約束介面
類的設計原則
剛接觸設計模式的時候我就被它的優雅給吸引了,發現原來 還可以這樣寫,當時的我入了迷。記得看的第一本設計模式的書籍叫 大話設計模式 當時的我還不能完全理解裡面的思想,但並不妨礙我被它的優雅給吸引,這本書我看了3遍,直到現在感覺還是有點亂,在這整理一下自己的思路,加深一下自己的理解。類的設計原則 開閉原...
物件導向的設計原則 類設計原則
物件導向設計中,如何通過很小的設計改變就可以應對設計需求的變化,這是令設計者極為關注的問題。為此不少oo先驅提出了很多有關物件導向的設計原則用於指導oo的設計和開發。下面是幾條與類設計相關的設計原則。1.開閉原則 the open closed principle ocp 乙個模組在擴充套件性方面應...
物件導向的設計原則 類設計原則
在物件導向設計中,如何通過很小的設計改變就可以應對設計需求的變化,這是令設計者極為關注的問題。為此不少oo先驅提出了很多有關物件導向的設計原則用於指導oo的設計和開發。下面是幾條與類設計相關的設計原則。1.開閉原則 the open closed principle ocp 乙個模組在擴充套件性方面...