Extract Subclass(提煉子類)

2021-08-02 16:10:32 字數 962 閱讀 9459

類中的某些特性只被某些(而非全部)例項用到。

*新建乙個子類,將上面所說的那一部分特性移到子類中*

1.主要動機:你發現類中的某些行為只被一部分例項用到,其他例項不需要它們。

2. extract class(提煉類)是extract subclass之外的另一種選擇,兩者之間的抉擇其實就是委託和繼承之間的抉擇。extract subclass通常更容易進行,但它也有限制:一旦物件建立完成,你無法再改變與型別相關的行為。此外,子類只能用以表現一組變化。如果你希望乙個類以集中不同的方式變化,就必須使用委託。

為源類定義乙個新的子類。

為這個新的子類提供建構函式。

1)簡單的做法是:讓子類建構函式接收與超累建構函式相同的引數,並通過super呼叫超類建構函式。

2)如果你希望對使用者隱藏子類的存在,可使用replace constructor with factory method(以工廠函式取代建構函式:你希望在建立愛你物件時不僅僅是做簡單的建構動作,將建構函式替換為工廠函式)。找出呼叫超類建構函式的所有地點。如果它們需要的是新建的子類,令它們改而呼叫新建構函式。

逐一使用push down method(函式下移:超類中的某個函式只與部分(而非全部)子類有關,將這個函式移到相關的那些子類去。)和push down field(字段下移:超類中的某個欄位只與部分(而非全部)子類有關,將這個欄位移到相關的那些子類去)將源。)類的特性移到子類去。

1)先處理函式在處理資料簡單。

2)當乙個public函式被下移到子類後,你可能需要重新定義該函式的呼叫端的區域性變數或引數型別,讓它們改而呼叫子類中的新函式。

找到所有這樣的字段:它們所傳達的資訊如今可由繼承體系自身傳達(這一類字段通常是bool變數或型別碼)。

每次下移之後,編譯並測試。

11 22周總結 提煉

關於這一周發生的事情 1.從14歲開始,我就很害怕和其他人爭執,發正面衝突。只要一出現和對方開撕,我一定會才去逃避的方式處理。但這週我的原則被觸碰到,我沒有妥協,而是直面惡人,告訴對方不要侵犯我的邊界,否則我會反擊。以前遇見強勢的人,我會盡最大可能去讓著對方。只是因為我無法處理在和其他人產生爭執時的...

提煉字串

功能 提煉字串 按第二個引數為分隔符解析字串,返回由 引數nwhichone 指定下標 由1開始計算 處的字元位址,其 長度儲存在引數plength 中。引數 const char szsourcstring,要解析的字串 char chseparator,指定分隔符 int nwhichone,指...

軟體工程 考點提煉

一 軟體工程知識 軟體生存週期與軟體生存週期模型 軟體開發方法 軟體開發專案管理 軟體開發工具 軟體開發環境 二 系統分析基礎知識 系統分析的主要步驟 機構化分析方法 三 系統設計基礎知識 概要設計與詳細設計的基本任務 系統設計的基本原理 系統模組結構設計 結構化設計方法 面向資料結構的設計方法 系...