[英]Understanding effective object creation
J. Bloch寫了以下有關對象創建的內容:
相反,除非維護池中的對象非常重,否則通過維護自己的對象池來避免創建對象是一個壞主意。
因此,如果我們開始聲明式創建過多的bean,則使用在容器內部創建的spring bean可能會造成一些危害。 例如,我通過偏斜提供了Factory
對象的實例:
<bean id="userFactory" class="com.foo.factory.UserFactory">
<property name="creatorMap">
<!-- map's declaration -->
</property>
</bean>
public class UserFactory{
Map<UserType, Creator> creators;
public User create(UserType t){
return creators.get(t).create();
}
}
public enum UserType{
VIP,
GUEST,
ACTIVE,
//etc
}
public interface Creator{
public User create();
}
在spring bean中聲明這樣的工廠不是一個壞主意嗎?
我認為,約書亞建議的背景對於創建對象( extremely heavyweights
對象)而言是昂貴的。 您創建對象池以重用並避免昂貴的創建,例如連接池之類的東西。您所引用的框架(Spring)本身在其基礎結構代碼中使用了許多這樣的工廠。 因此,我認為這應歸結為您在申請中是否需要此類工廠。 每個使用這種工廠的應用程序線程都會創建它自己的上下文對象,並且數量取決於對工廠bean的此類請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.