首页 > 代码库 > C#设计模式(1)=>单例模式
C#设计模式(1)=>单例模式
什么是单例模式:保证一个类只能有一个实例对象存在,并提供一个全局的访问点;
应用环境:只需要一个对象,一个实例的时候
例如:WinForm只能创建一个窗体的时候;只需要一个实例对象的时候
代码:
public class Singleton{//通过静态的私有变量来判定是否类的实例化是否唯一private static Singleton myInstancd; private Singleton(){ } //定义全局的方法提供类的外部访问public static Singleton GetInstance(){//如果为空则实例化对象,否则返回该对象if(myInstancd==null){myInstancd = new Singleton();}return myInstancd;}}
缺点:在多线程的时候两条线程同时访问会都为空,会创建多个实例
解决办法:加锁
public class Singleton{//通过静态的私有变量来判定是否类的实例化是否唯一private static Singleton myInstancd;//判定是否加锁保证线程同步private static readonly object myLock = new object();private Singleton(){ } //定义全局的方法提供类的外部访问public static Singleton GetInstance(){//lock加锁的时候线程会挂起,不会出现多个实例对象lock (myLock){//如果为空则实例化对象,否则返回该对象if (myInstancd == null){myInstancd = new Singleton();}}return myInstancd;}}
参考
C#设计模式(1)=>单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。