博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[置顶] 设计模式之单例模式 (Design patterns of the The singleton pattern)c#
阅读量:4955 次
发布时间:2019-06-12

本文共 1133 字,大约阅读时间需要 3 分钟。

     单例模式饿目的是确保某个类只有一份实例,而且从在一个全局访问点来访问这个实例,这一模式保证类只能被实例化一次,而且所有的请求都使用这个唯一的实例,此外,对象应该在使用的时候才被创建,在单例模式中,实施这种约束的是类本身,而不是类的额客户。

理论代码:

public sealed class Singleton{

//私有构造函数

Singleton(){ }

//通过私有构造函数实例化的私有对象

static readonly Singleton instance=new Singleton();

//获取对象的共有静态属性

public static Singleton UniqueInstance{

get { return instance;}

}

}

单例模式------懒惰式初始化(懒汉模式)

//sealed 阻止发生派生,而派生可能增加实例

public sealed class Singleton{

//私有构造函数

Singleton(){ }

//用于懒惰式初始化的嵌套类

class SingletonCreator(){

static SingletonCreator(){}

//通过私有构造函数实例化的私有对象

internal static readonly Singleton uniqueInstance =new Singleton();

}

public static Singleton UniqueInstance{

get { return SingletonCreator.uniqueInstance;}

}

}

多线程时的单例模式

class Singleton

{

 private static Singleton instance;

 private static readonly object syncRoot=new object();  //创建一个静态只读的进程辅助对象,

 private Singleton()

 {

 }

 public static SingletonGetInstance()

 {

     if(instance==null) // 双重锁定

      {

            //锁定进程 ,当线程位于代码的临界区时,另一个线程不进入临界区,如果其他线程试图进入锁定的代码,它将一直等待,知道该对象释放。

            lock(syncRoot)

            {

                  if(instance==null)  //双重锁定

                   { 

                       instance=new Singleton();

                    }

            }

      }

 

}

}

转载于:https://www.cnblogs.com/wsq724439564/archive/2013/03/11/3258208.html

你可能感兴趣的文章
windows下使用VS2015编译V8 JavaScript引擎(v5.5 - 2016/09)
查看>>
多线程下的false sharing问题+编程实践(待完善)
查看>>
sqlplus启动后的环境SQLPATH的设置
查看>>
消息队列
查看>>
JS中typeof与instanceof的区别
查看>>
常用linux命令
查看>>
Java 8之Stream语法详解
查看>>
解决一个题目。关于结构体与链表的操作
查看>>
Css 图形
查看>>
利用UIImagePickerController或者利用UIKit的 UIGraphicsBeginImageContext保存图片
查看>>
Loadrunner|录制脚本时出现乱码的解决方式
查看>>
Python 装饰器
查看>>
对象(一)--对象的继承
查看>>
mysql操作之二
查看>>
RSA私钥加密
查看>>
Android Service 详解五:前台运行与生命期
查看>>
Loj #6261. 一个人的高三楼
查看>>
js验证身份证号,超准确
查看>>
EasyUI分页(前台分页和后台分页)
查看>>
LaLeX数学公式
查看>>