创建实例

问题描述:

请告诉我创建实例

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

+0

定义默认构造函数只有一种方法。你展示的是创建类的实例的两种方法。 – 2010-06-08 02:47:30

+0

这是功课吗? – 2010-06-08 07:10:15

  • 类应该是一个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();
+0

谢谢,这是我期待的术语。 – 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的新实例(如果它选择)。

+0

谢谢。这是非常明确的答案 – aladine 2010-06-08 02:43:41

在第一种情况下,只有一个可用实例。在第二种情况下,可以有尽可能多的情况。你需要在第一种情况下使构造函数保持私有。