-
什麼是靜態工廠方法?
通常我們獲取類的實例是採用new,通過構造方法獲取一個實例。除此以外,我們還能夠用一個靜態方法來對外提供自身實例,即靜態工廠方法。 -
靜態工廠方法的優勢
2.1 靜態工廠方法可以有自己的名稱
構造方法與類同名,當出現多個重載的構造方法時區別僅在參數列表,用戶易於混淆。而靜態工廠方法可以爲不同的參數列表定義不同的名稱,突出不同靜態工廠方法之間的區別。2.2 不必每次調用時都創建一個新對象
有時候外部調用者只需要拿到一個實例,而不關心是否是新的實例;又或者我們想對外提供一個單例時 —— 如果使用工廠方法,就可以很容易的在內部控制,防止創建不必要的對象,減少開銷。2.3 可以返回原返回類型的子類
這使我們在選擇返回對象的類時有了更大的靈活性。尤其時對於基於接口的框架,Java8以後接口可以有靜態方法,那麼我們就可以直接通過接口來引用被返回的對象。2.4 所返回的對象的類可以隨着每次調用的變化而變化
根據不同的參數值返回不同的結果,只要是聲明的返回類型的子類都可以,具體的實現過程不可見。這允許開發者後續對類的實現進行修改而不造成負面結果。2.5 方法返回的對象所屬類,在編寫該靜態方法時可以不存在。
這種靈活的特性構成了服務提供者框架的基礎。 -
靜態工廠方法的缺點
如果一個類不含有公共或被保護的構造器,就不能被子類化。此外,相比於構造器,靜態工廠方法在API文檔中沒有明確標識,不易被程序員所察覺。
靜態工廠方法相比於構造器之優劣
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.