让我们首先分析以下问题:
我们可以有私有构造函数吗?
你很容易猜到, 就像任何方法一样, 我们可以为构造函数提供访问说明符。如果将其设为私有, 则只能在班级内部进行访问。
我们需要这样的"私有构造函数"吗?
在多种情况下, 我们可以使用私有构造函数。主要的是
- 内部构造函数链接
- 单例类设计模式
什么是单例课程?
顾名思义, 如果某个类将该类的对象数限制为一个, 则该类称为单例。
这些类的对象不能超过一个。
单例类在诸如网络和数据库连接之类的概念中被广泛采用。
Singleton类的设计模式:
单例类的构造函数将是私有的, 因此必须有另一种方法来获取该类的实例。使用类成员实例和工厂方法返回该类成员可以解决此问题。
以下是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
我们更改了a.x的值, b.x的值也得到了更新, 因为" a"和" b"都指向同一对象, 即它们是单例类的对象。
本文作者:阿舒托什·库玛·辛格(Ashutosh Kumar Singh)。如果你喜欢lsbin并希望做出贡献, 那么你也可以写一篇文章并将你的文章邮寄到contribution@lsbin.org。查看你的文章出现在lsbin主页上, 并帮助其他Geeks。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。