簡體   English   中英

了解有效的對象創建

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM