1. 程式人生 > >重構筆記6--type code 的替換方式

重構筆記6--type code 的替換方式

  1. 以類取代型別碼  -- 型別碼不影響類的行為

型別碼是純粹的資料時(也就是型別碼不會在switch語句中引起行為變化時)才能以類來取代它

如:人的血型,這是人的一個基本屬性,並不會影響人的升職,喝酒,吃飯等行為

  1. 以子類取代型別碼 -- 型別碼不可變,並且會影響類的行為

型別碼不會影響宿主類的行為

如果有以下兩種情況,則不能這樣做

(1) 型別碼值在物件建立之後發生了改變

(2) 型別碼宿主類已經有了子類

還是再如人的血型,如果是血型不同,性格不同,然後吃飯時間點不同,即一個人的血型不會改變,但是血型會影響人吃飯的時間,那麼可以建立子類:A型血personB型血personO型血person

  1. Replace type code with state/strategy

型別碼的值在物件生命週期中發生了變化,或者宿主類不能被繼承

比如person的職位,根據職位不同薪水不同

Person的物件建立完成後可以改變職位,那麼薪水也會隨著改變

物件不能改變,那麼物件呼叫獲取薪水的方法也不會改變

state/strategy 就是為了能夠動態的改變物件的行為