📜  Java中的私有构造函数和单例类

📅  最后修改于: 2022-05-13 01:55:06.374000             🧑  作者: Mango

Java中的私有构造函数和单例类

我们首先分析以下问题:

我们可以有私有构造函数吗?

正如您可以轻松猜到的,就像任何方法一样,我们可以为构造函数提供访问说明符。如果它是私有的,那么它只能在类内部访问。

我们需要这样的“私有构造函数”吗?

我们可以在多种场景中使用私有构造函数。主要的是

  1. 内部构造函数链接
  2. 单例类设计模式

什么是单例类?

顾名思义,如果一个类将该类的对象数限制为一个,则称该类为单例类。

对于这样的类,我们不能有多个对象。

单例类广泛用于网络和数据库连接等概念。

单例类的设计模式:

单例类的构造函数是私有的,因此必须有另一种方法来获取该类的实例。使用类成员实例和返回类成员的工厂方法解决了这个问题。

以下是Java中的一个示例,说明了相同的内容:

// Java program to demonstrate implementation of Singleton 
// pattern using private constructors.
import java.io.*;
  
class MySingleton
{
    static MySingleton instance = null;
    public int x = 10;
    
    // private constructor can't be accessed outside the class
    private MySingleton() {  }
   
    // Factory method to provide the users with instances
    static public MySingleton getInstance()
    {
        if (instance == null)        
             instance = new MySingleton();
   
        return instance;
    } 
}
  
// Driver Class
class Main
{
   public static void main(String args[])    
   {
       MySingleton a = MySingleton.getInstance();
       MySingleton b = MySingleton.getInstance();
       a.x = a.x + 10;
       System.out.println("Value of a.x = " + a.x);
       System.out.println("Value of b.x = " + b.x);
   }    
}

输出:

Value of a.x = 20
Value of b.x = 20

我们改变了 ax 的值,bx 的值也得到了更新,因为 'a' 和 'b' 都指向同一个对象,即它们是单例类的对象。