避免建立不必要的物件

2021-07-28 13:14:05 字數 596 閱讀 6680

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

class person

}

isbabyboomer每次被呼叫的時候,都會新建乙個calendar ,乙個timezone和兩個date例項,這是不必要的。下面的版本用乙個靜態的初始淨化器,避免了這種效率低下的情況:
public

class

person

public

boolean

isbabyboom()

}

改進後的person類只有在初始化的時候建立calendar ,timezone,date例項一次,而不是在每次呼叫isbabyboom的時候都建立這些例項,如果這個方法被頻繁的呼叫,將會顯著的提高效能。

避免不必要的物件

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

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

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

EJ 05 避免建立不必要的物件

極端的反面例子,每次執行都會建立乙個新的string例項 string s new string stringette don t do this 建議 string s stringette 遺留任務 boolean.valueof string 總是優先於構造器boolean string 確認...