转发:私有构造函数的作用

一般情况下使用的是public。如果有特殊要求的情况下,可能使用private修饰。

 

如果一般常见的单例模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Singlton
{
private static Singleton _Instance;
provate static readonly object syslocker = new object();
//私有化构造函数
private Sinalton()
{
}
public static Singlton GetInstance()
{
if(_Instance == null)
{
lock(syslocker)
{
if(_Instance == null)
{
_Instance = new Singlton();
}
}
}
return _Instance;
}
}

这种形式就必须使用private将构造私有化,然后通过GetInstance()方法获得实例。这样能保存生成的实例是单一的。不允许用户使用构造函数重新构造。

 

不管怎么说,虽然我们可以对实例进行私有化,但必须有其他的静态方法来获得实例。如果不通过静态方法或静态属性来获得得实例,那么这么类就没有存在的必要了。

 

 

所以虽然可以私有化构造函数,但一般要因为对生成有一定的控制,否则最好还是使用public。或使用默认生成的。[不写构造函数时,编译器会默认编译一个]

 

 

列子2:

私有构造函数一般用于单件设计模式

设计了私有构造函数,客户端代码将无法通过new来实例化该对象,此时还要单独设计一个Create静态方法,利用他来创建对象。

例如:
public class CarFactory
{
private static
bool flag = false;
private CarFactory()
{
}

public static CarFactory getSpooler()
{
if (!flag)
{
flag = true;
return new CarFactory();
}
else
{
return null;
}
}
}
posted @ 2015-04-09 15:42  阿玛  阅读(242)  评论(0编辑  收藏  举报