https://www.cnblogs.com/rush/archive/2011/10/30/2229565.html
单例模式中,只能创建一个类对象,可以用在多次点击按钮只弹出一个窗体
//单例模式编写的步骤:
第一步,将类的构造函数的访问修饰符改成private,这样外部就不能创建该类的对象了
第二步:在该类中增加一个public访问修饰符的静态方法。
通过以上两步,就实现了,外部不能通过new关键字调用该类的构造函数来创建类的对象,要创建对象必须通过调用该静态函数CreateInstance()来创建对象。这样就可以在CreateInstance()方法中控制创建对象的过程
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 单例模式
{
class Program
{
static void Main(string[] args)
{
#region 1
Person p = new Person();
//Person p1 = Person.CreateInstance();
//Person p2 = Person.CreateInstance();
//单例模式第一步,将类的构造函数的访问修饰符改成private,这样外部就不能创建该类的对象了
//第二部:在该类中增加一个public访问修饰符的静态方法。
//通过以上两步,就实现了,外部不能通过new关键字调用该类的构造函数来创建类的对象,要创建对象必须通过调用该静态函数CreateInstance()来创建对象。这样就可以在CreateInstance()方法中控制创建对象的过程
#endregion
#region 2
#endregion
}
}
//单例模式
public class Person
{
private static readonly Person _instance = new Person();
public static Person GetInstance()
{
return _instance;
}
private Person()
{
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public string Email
{
get;
set;
}
}
//public class Person
//{
// private Person()
// {
// }
// //创建一个私有的静态的变量
// private static Person _instance = null;
// //创建一个实例
// public static Person CreateInstance()
// {
// if (_instance == null)
// {
// _instance = new Person();
// }
// return _instance;
// }
// public string Name
// {
// get;
// set;
// }
// public int Age
// {
// get;
// set;
// }
// public string Email
// {
// get;
// set;
// }
//}
}