创建实例
请告诉我创建实例
public class A{
private static A instance = new A();
public static A getInstance() { return instance;
}
public static void main(String[] args) {
A a= A.getInstance();
}
}
和
public class B{
public B(){};
public static void main(String[] args) {
B b= new B();
}
}
由于Java的构造函数的声明的两种方法之间的差异A
- 类应该是一个Singleton,其中您只能有一个A实例。您可以通过调用来检索该单个实例
在软件工程中,单 图案是用于 实现的 单身的数学概念的设计图案,通过限制 实例化的类的,以一个 对象。这在正好是 需要一个对象来协调整个系统的动作 时非常有用。
有几种方法去这个根据您的要求:
public class A{
private static A instance = new A();
private A(){} // private constructor
public static A getInstance() {return instance;}
}
或不创建实例,直到第一次调用
public class A{
private static A instance = null;
private A(){} // private constructor
public static A getInstance() {
if(instance == null){
instance = new A(); // create the one instance.
}
return instance;
}
}
-
B
类是一类用一个没有参数的构造函数。你可以通过调用new B();
谢谢,这是我期待的术语。 – aladine 2010-06-08 02:43:10
它看起来像一个在执行单模式的尝试创建只要你想里许多实例,但它并不完全正确的 - 它应该有一个私人的构造函数:
class A {
private static final A INSTANCE = new A();
private A() { }
public static A getInstance() { return INSTANCE; }
}
这可以确保在应用程序中只存在一个A的实例 - 如果任何其他对象需要使用A的实例来执行某项操作,则唯一可以获取的实例是通过getInstance()
方法,该方法返回相同的所有的时间。
使用B,您可以根据需要拥有尽可能多的B实例,并且任何其他对象都可以*创建B的新实例(如果它选择)。
谢谢。这是非常明确的答案 – aladine 2010-06-08 02:43:41
在第一种情况下,只有一个可用实例。在第二种情况下,可以有尽可能多的情况。你需要在第一种情况下使构造函数保持私有。
定义默认构造函数只有一种方法。你展示的是创建类的实例的两种方法。 – 2010-06-08 02:47:30
这是功课吗? – 2010-06-08 07:10:15