单例设计模式示例

时间:2018-11-30 18:15:13

标签: java

我正在研究单例模式,并且看到了以下示例以了解该模式:

public class SingleTonClass {
   //Static Class Reference
   private static SingleTonClass obj=null;
   private SingleTonClass(){
      /*Private Constructor will prevent 
       * the instantiation of this class directly*/
   }
   public static SingleTonClass objectCreationMethod(){
    /*This logic will ensure that no more than
     * one object can be created at a time */
    if(obj==null){
        obj= new SingleTonClass();
    }
        return obj;
   }
   public void display(){
    System.out.println("Singleton class Example");
   }
   public static void main(String args[]){
    //Object cannot be created directly due to private constructor 
        //This way it is forced to create object via our method where
        //we have logic for only one object creation
    SingleTonClass myobject= SingleTonClass.objectCreationMethod();
    myobject.display();
   }
}

我听不懂这行:

private static SingleTonClass obj=null;

或此行:

 public static SingleTonClass objectCreationMethod()

这是我第一次看到方法的声明包含类的名称。 我需要对这两行进行详细说明。

2 个答案:

答案 0 :(得分:2)

此行

private static SingleTonClass obj=null;

声明相同类类型SingleTonClass static 变量。

以上声明是实现单例类的标准方法,因为此静态变量是仅引用Singleton类的一个对象的唯一变量,我们将允许创建该对象,同时将构造函数声明为{ {1}},因此没有其他类可以使用private运算符创建此类的对象。

这行,

new

是创建Singleton类的另一个链接,其中此方法控制Singleton类对象的创建和检索。

就像我上面说的那样,Singleton类的构造函数是私有的,因此现在我们需要某种方法来创建或检索Singleton类对象,而此方法正是这样做的。通常也将其声明为public static SingleTonClass objectCreationMethod() ,而将其声明为getInstance()。为什么要使用公共静态,以便public static可以访问此Singleton类的对象,而对于您的类,它将是Classname.getInstance()

希望这可以澄清。

答案 1 :(得分:0)

 private static SingleTonClass obj=null;

这是SingleTonClass对象,您可以看到它是私有的,因此您不能修改该值,通常您会这样做

SingleTonClass obj = new SingleTonClass();

创建和对象,但是在这种情况下,构造方法必须是私有的,因此您根本无法创建此类的对象,唯一的方法是通过此方法

public static SingleTonClass objectCreationMethod()

是静态的,因为您不能做SingleTonClass obj = new SingleTonClass(); 您可以通过这种简单的方式访问

SingleTonClass myobject= SingleTonClass.objectCreationMethod();