班级是单身还是不单身。如何将类作为单例或原型 - 在Spring中

时间:2013-10-02 06:50:57

标签: java spring singleton

默认情况下,一个类是单身还是不单..

public class You{
}

public class My(){
public static void main(String a[]){

You you=new You();

}
}

you对象是单身.. 如果它是单身如何使它成为原型.. 如果它是原型如何使一个类成为单身..

提前谢谢..

3 个答案:

答案 0 :(得分:6)

不,这不是单身人士。您可以创建多个实例:

You you1 = new You();
You you2 = new You();

单例类仅强制执行通常通过包含私有构造函数创建的单个实例,以及用于检索单个实例的静态方法。这可以通过Java使用只有一个值的枚举来实现。

然后:

  

如果是单身如何使其成为原型

术语“原型”在Java中没有任何意义。编辑:如果你在谈论Spring,prototype is a scope - 它是特定于Spring的。

答案 1 :(得分:3)

  

默认情况下,一个类是单身还是不单身。

该类不是单例,因为它具有编译器添加的默认0-arg公共构造函数。因此,您可以根据需要创建任意数量的实例。

  

如果它是原型如何使一个类成为单身..

我想,你在Spring框架中与prototype个实例的范围有关的术语bean。在Spring中,默认情况下所有bean都是单例。要使其成为原型,您必须指定scope = "prototype"。但我建议你在进入框架之前先学习Java的基础知识。

制作班级单身人士时必须考虑各种各样的事情:

  • 制作课程final,以便无法扩展。
  • 制作所有字段private final
  • 制作构造函数private
  • 在该类中使用private static final实例字段,以及允许在应用程序间共享同一实例的public static getter
  • 序列化反序列化时保存单例类不被实例化。

实现所有这些目标的最佳方法是使用enum,其中包含一个常量:

enum You {
    INSTANCE;
}

答案 2 :(得分:1)

  

默认情况下,一个类是单身还是不单..

不,您可以为默认类创建多个实例。

  

you对象是单身..

否。(参见附件中的链接,为什么不这样做。)

  

如果是单身如何使其成为原型..

再次,它不是单身人士。它已经是原型(在你的假设中,非单身)

  

如果它是原型如何使一个类成为单身..

What is an efficient way to implement a singleton pattern in Java?

最后:

Creating Object's in Java

上的官方文档