讀書筆記-《Effective Java》第1條:考慮用靜態工廠方法代替構造器
優勢
- 它們有名稱
構造器沒有名稱, 當一個類有多個構造器的時候就不容易分清楚哪個是自己想要的。
- 不必在每次呼叫它們的時候都建立一個新物件
如果新建立的物件的成員屬性是可以重用的, 那麼可以先把第一次建立的物件儲存起來,以後想用的時候就不用建立新的物件了。就是Singleton、例項受控的類。也可以控制物件例項的生死。因為多次呼叫返回統一例項的原因,要判斷兩個引用是否為一個物件,那麼就可以用==判斷,可以提高效率。
- 它們可以返回原返回型別的任何子型別的物件
- 在建立引數化型別例項的時候,它們使程式碼變得更加簡潔
構造器上不能使用型別推導。可以看看 Lists.newArrayList()和Maps.newHashMap()方法的實現。
缺點
- 類如果不含共有的或者受保護的構造器,就不能被子類化
當使用靜態工廠方法建立物件時,一般都會把構造器私有化。就會導致類不能被繼承。
- 它們與其他的靜態方法實際上沒有任何區別
所以注意給方法起個好名,變數名、類名也是如此。不能瞎求寫。
相關推薦
讀書筆記-《Effective Java》第1條:考慮用靜態工廠方法代替構造器
優勢 它們有名稱 構造器沒有名稱, 當一個類有多個構造器的時候就不容易分清楚哪個是自己想要的。 不必在每次呼叫它們的時候都建立一個新物件 如果新建立的物件的成員屬性是可以重用的, 那麼可以先把第一次建立的物件儲存起來,以後想用的時候就不用
EffectiveJava讀書筆記- 第1條:考慮用靜態工廠方法代替構造器
考慮靜態工廠方法代替構造器 靜態工廠方法相對於構造器的好處: 1. 靜態工廠方法有名字,相比構造器建立的物件更語義化 最好的例子就是併發庫中的Executors工具類了。 Executors中有多個建立執行緒池的方法: public static
第1條:考慮採用靜態工廠方法代替構造器
第1條:考慮採用靜態工廠方法代替構造器 對類而言,為了讓客戶端獲取它自身的一個例項,最常用的方法就是提供一個公有的構造器。還有一種應該被程式設計師重視的方法:類提供一個公有的靜態工廠方法(static factory method),它只是一個返回類的例項的靜態方法。下面是來自Boolean(基本型別boo
Tips1:考慮用靜態工廠方法代替構造器
用靜態工廠方法來代替構造器為外界提供物件 描述: 靜態工廠方法代替構造器來給外界提供物件,建立物件依然是由構造器來完成的 建立物件和提供物件: 建立物件的方式: 構造器 提供物件來哦方式: 構造器 類中公有的靜態方法 一般在使用靜態工廠方法時,會根據方法的需要提供private的構造器 靜
【Effective Java讀書筆記】創建和銷毀對象(一):考慮使用靜態工廠方法代替構造器
返回對象 boolean 簡化 將不 其他 種類型 bigint color pre 類可以提供一個靜態方法,返回類的一個靜態實例,如Boolean包裝類的一個獲取實例的靜態方法 1 public static Boolean valueOf(boolean b) { 2
EffectiveJava讀書筆記——考慮用靜態工廠方法代替構造器(一)
無法 父類 應該 樹結構 對象 如何 log 筆記 工廠類 參考網址:http://blog.csdn.net/mingyunduoshou/article/details/6149758 http:[email protect
Effective Java-考慮用靜態工廠方法代替構造器
public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } //使用構造器 Boolean b1 = new Boolean(true); //使用靜態工廠方
[Effective Java]考慮用靜態工廠方法代替構造器
本文主要介紹如何使用靜態工廠方法已經在那種場合來使用這種方式代替構造方法。 眾所周知,對於類而言,我們為了獲得一個類的例項物件,通常情況下會提供一個公有的(public) 的構造器。當然
1. 【建立與銷燬物件】考慮用靜態工廠方法代替構造器
本文內容為《Effective Java》的讀書筆記。 對於某一個類,要獲取其物件,通常是使用共有的構造方法new一個。其實還有另一種方法也是經常用到的,那就是靜態工廠方法。 (注:此處的靜態工廠方法不同於工廠模式) 舉個例子: public static Int
【effective java】考慮用靜態工廠方法替代構造器
這裡所說的靜態工廠方法就是返回型別例項的靜態方法。 那麼為什麼不使用構造器呢?用構造器方式構造例項不是我們一直約定好的嗎? 嘿嘿 主要原因還是我們的構造器方法規定的太多限制了我們程式的靈活性: 構造器規定一:構造器只能本類例項,不能返回子類例項對吧。 構造器規定二:構造器一
Java物件學習之建立物件——使用靜態工廠方法代替構造器缺點
最近學習Android知識,發現Java好多的基礎知識運用的真的很一般,所以決定在重新梳理一下,現在Kotlin也來了,在Android之路上,留給我看Java的時間不多了。 靜態我們就來簡單介紹一下,使用靜態工廠方法建立物件相較於構造器建立的物件的優缺
Java物件學習之建立物件——使用靜態工廠方法代替構造器優點(四)
最近學習Android知識,發現Java好多的基礎知識運用的真的很一般,所以決定在重新梳理一下,現在Kotlin也來了,在Android之路上,留給我看Java的時間不多了。 靜態我們就來簡單介紹一下,使用靜態工廠方法建立物件相較於構造器建立的物件的優缺
Java物件學習之建立物件——使用靜態工廠方法代替構造器優點(二)
最近學習Android知識,發現Java好多的基礎知識運用的真的很一般,所以決定在重新梳理一下,現在Kotlin也來了,在Android之路上,留給我看Java的時間不多了。 靜態我們就來簡單介紹一下,使用靜態工廠方法建立物件相較於構造器建立的物件的優缺
Java物件學習之建立物件——使用靜態工廠方法代替構造器優點(一)
最近學習Android知識,發現Java好多的基礎知識運用的真的很一般,所以決定在重新梳理一下,現在Kotlin也來了,在Android之路上,留給我看Java的時間不多了。 靜態我們就來簡單介紹一下,使用靜態工
1.考慮用靜態工廠方法替代構造器
public final class Boolean implements java.io.Serializable,Comparable<Boolean>{ public static final Boolean TRUE = new Boolean(true);
1、用靜態工廠方法代替構造器
一、客戶端獲取類的一個例項,有兩種解決方案 最傳統的方法就是提供一個公有的構造器。 類提供一個公有的靜態工廠方法,返回一個類的例項的靜態方法。 二、靜態工廠方法的優點 1、有方法名,可讀性強 不同的靜態工廠方法,有自己的專屬名稱。如果構造器的引數本身沒有確切地描述正被返回的物件,那麼具有名稱的靜態工廠方
Effective Java 第三版讀書筆記——條款1.考慮使用靜態工廠方法替代構造器
lean jdb 底層 public lasso 基本 win inter nds 獲取一個類的實例的傳統方法是使用公開的構造器,除此之外,一個類還可以提供公開的靜態工廠方法(static factory method)來返回它的實例。例如 Boolean 類中的 valu
Effective Java 第三版閱讀筆記——條款1.考慮使用靜態工廠方法替代構造器
獲取一個類的例項的傳統方法是使用公開的構造器,除此之外,一個類還可以提供公開的靜態工廠方法(static factory method)來返回它的例項。例如 Boolean 類中的 valueOf 方法,這個方法將基本型別 boolean 轉換為一個 Boolean 物件的引用: pub
effective Java 1 使用靜態工廠方法代替構造器
jdk Boolean類的原始碼:public final class Boolean implements java.io.Serializable, Comparable<Boolean> { public static final
Effective Java 學習筆記 使用靜態工廠方法代替構造器
什麼是使用靜態工廠方法代替構造器:建立一個靜態方法,返回值是類的例項 使用靜態工廠方法的好處總結: 1.可以隱藏構造方法,把控物件的建立。可以讓物件是單例,複用已經有的物件,比如Boolean public static final Boolean TRUE = new