繁体   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