Refactoring to Patterns 讀書筆記(一)

應用 Create Methods 模式代替構造器(constructor)

在面向對象的語言中,類的構造都是通過類的構造器完成的。但是OOP技術經過這麼多年的發展,發現直接把構造器暴露給客戶使用,在實踐中並非一個很好的技術方式,故此各種 Factory 模式應運而生。就 Java 語言而言,構造器的缺點或者限制至少有如下三點:

1.應爲構造器的名字是不能隨意選擇的,只能和類名保持一致。因此,構造器的名稱有時候不能很好的反映它本身的工作意圖,尤其是在一個類中有很多構造器的情況下。

2.還是因爲構造器的名字是固定的緣故,我們也就不能創造兩個具有相同特徵(signature)的構造器。

3.客戶代碼直接使用構造器獲得所需要的類實例,就意味着要在客戶代碼中使用 new 關鍵字,而“任何一行使用了 new 關鍵字的代碼都違反了 DIP”(依賴倒置原則)。

Create Methods 模式的實現非常簡單,只需創建一些 static 或者非 static 的方法進行類的實例化工作,用以替換衆多的構造器。

 

如果類中的 create methods 太多,就容易混淆類的原初意圖,也有損於代碼的可讀性和可維護性。在這種情況下,可以考慮爲該類單獨寫一個 factory class,將創建對象的方法都分離出來。

 


Chain Constructors

如果類中的多個構造器之間存在重複的代碼,可以將之“串”在一起,消除重複代碼。

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章