1、私有化构造函数
2、提供一个私有的静态的类型变量,比如以下提供的是一个私有的静态的Person类型变量;
3、提供一个公共的静态的方法,用来返回上面的变量,这个变量指向的是单例模式里面的有且仅有一个的实例;
class Person
{
public string Name { get; set; }
private static Person p; //声明一个私有静态变量
//私有构造函数,只能在当前类里面使用
private Person()
{
this.Name = "小明";
}
//公共静态方法,返回一个指向特定对象的变量
public static Person GetSingle()
{
//if判断使得永远不会重新new第二个Person对象
if (p==null)
p = new Person();
return p;
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person(); //错误!不能new ,因为不能调用Person类里面的私有构造函数
Person p0 = Person.GetSingle();
Person p1 = Person.GetSingle();
Person p2 = Person.GetSingle();//p0、p1、p2指向的都是同一个对象
Console.WriteLine("{0}--{1}--{2}", p0.Name, p1.Name, p2.Name);//输出 小明--小明--小明
Console.ReadKey();
}
}
如果在某一时刻现在只能有一个对象访问一些资源,就能用单例模式来限制