📅  最后修改于: 2020-04-02 14:05:47             🧑  作者: Mango
让我们首先分析以下问题:
我们可以有私有构造函数吗?
您很容易猜到,就像任何方法一样,我们可以为构造函数提供访问说明符。如果将其设为私有,则只能在类内部访问它。
我们需要这样的“私有构造函数”吗?
在多种情况下,我们可以使用私有构造函数。主要是
什么是Singleton类?
顾名思义,如果某个类将该类的对象数限制为一个,则该类称为Singleton类。
这些类的对象不能超过一个。
Singleton类在诸如网络和数据库连接之类的概念中被广泛采用。
Singleton类的设计模式:
单例类的构造函数将是私有的,因此必须有另一种方法来获取该类的实例。使用类成员实例和工厂方法返回该类成员可以解决此问题。
以下是Java中的示例说明了这一点:
// Java使用私有构造函数创建Singleton类的实例
import java.io.*;
class MySingleton
{
static MySingleton instance = null;
public int x = 10;
// 私有构造函数不能被外部类访问
private MySingleton() { }
// 工厂函数提供用户实例
static public MySingleton getInstance()
{
if (instance == null)
instance = new MySingleton();
return instance;
}
}
// 测试代码
class Main
{
public static void main(String args[])
{
MySingleton a = MySingleton.getInstance();
MySingleton b = MySingleton.getInstance();
a.x = a.x + 10;
System.out.println("打印a.x = " + a.x);
System.out.println("打印b.x = " + b.x);
}
}
输出:
打印a.x = 20
打印b.x = 20
我们更改了ax的值,bx的值也得到了更新,因为’a’和’b’都引用相同的对象,即它们是单例类的对象。