避免建立重複的物件

2021-04-19 01:08:52 字數 448 閱讀 1674

避免建立重複的物件,如果乙個物件是不可變的,那麼它總是可一被重用 

書中的例子:

string s=new string("silly");//這個為什麼不好?該語句每次被執行的時候都建立乙個新的string例項.

string s="silly"; //只使用乙個string例項

今年年初,專案組在進行專案優化的時候,遇到過類似的**,當時問了下為什麼第一種不好,大家只是說不好,並沒有說出原因.而現在,終於在書中找到了答案.

所以對於同時提供靜態工廠方法和建構函式的非可變類,通常可以利用靜態工廠方法而不是建構函式,以避免建立重複的物件.如:boolean.valueof(string)優先於boolean(string) .也就是如果有別的方法可以建立物件的話,應該盡量避免去new 乙個物件.

除了重用非可變的物件之外,對於那些已知不會被修改的可變物件,也可一重用他們.(例子見書上.)

不要建立重複的物件

重複使用同乙個物件,而不是每次需要的時候就建立乙個功能上等價的新物件,通常前者更為合適.下面有乙個例子 string rainer new string rainer 錯誤的寫法,要避免 這個語句每次執行的時候都建立乙個新的string例項,但是這些建立物件的動作沒有乙個是真正需求的.傳遞給stri...

避免建立不必要的物件

下面是乙個比較微妙也比較常見的反面的例子,其中涉及可變的date物件,他們的值一旦計算出來之後就不再變化。這個類建立了乙個模型 其中有乙個人,並有乙個isbabyboomer方法,用來檢驗這個人是否為乙個babyboomer,換句話說,就是檢驗這個人是否出生於1946年至1964年之間。public...

建議 避免建立不必要的物件。

一般來說,最好能重用物件而不是在每次需要的時候就建立乙個相同功能的新物件。重用方式既快速,又流行。如果物件時不可變的 immutable 它就始終可以被重用。作為乙個極端的反面例子,考慮下面的語句 string s new string stringette don t do this 該語句每次被...