作用:保证一个类有且仅有一个实例(避免对象资源重复创建,造成资源浪费),并提供一个访问它的全局访问点。
单例模式一:构造函数私有化,双if+lock锁;
public class SingleProfit { //创建私有化静态obj锁 private static readonly object _ObjLock = new object(); //创建私有静态字段,接收类的实例化对象 private static SingleProfit _SingleProfit = null; //构造函数私有化 private SingleProfit(){} //创建单利对象资源并返回 public static SingleProfit CreateSingleProfitObj() { if(_SingleProfit == null) { lock (_ObjLock) { if (_SingleProfit==null) { _SingleProfit = new SingleProfit(); } } } return _SingleProfit; } //多线程环境下测试 public string Test() { return "SayHi,.NET Core!"; } }
单例模式二:构造函数私有化,静态构造函数初始化;
public class SingleProfit { //创建私有静态字段,接收类的实例化对象 private static readonly SingleProfit _SingleProfit = null; //构造函数私有化 private SingleProfit() { } //静态构造函数,创建单利对象资源 static SingleProfit() { _SingleProfit = new SingleProfit(); } //获取单利对象资源 public static SingleProfit CreateSingleProfitObj() { return _SingleProfit; } //多线程环境下测试 public string Test() { return "SayHi,.NET Core!"; } }
类方法中调用:
string hi = SingleProfit.CreateSingleProfit().Test();