zoukankan
html css js c++ java
C#设计模式:Singleton模式
如何保证一个类只能有一个实例存在?
在多线程情况下如何解决?
using
System;
using
System.Collections.Generic;
using
System.Text;
namespace
Singleton
{
class
Singleton
{
//
构造函数私有化,保证不被显式实例化
private
Singleton()
{ }
//
定义属性,返回Singleton对象
private
static
Singleton singleton;
public
static
Singleton Instance
{
get
{
if
(singleton
==
null
)
singleton
=
new
Singleton();
return
singleton;
}
}
}
}
//
多线程版本的Singleton
namespace
SingletonMultiThread
{
class
Singleton
{
private
static
object
lockHelper
=
new
object
();
//
构造函数私有化,保证不被显式实例化
private
Singleton()
{}
//
定义属性,返回Singleton对象
private
static
volatile
Singleton singleton
=
null
;
public
static
Singleton Instance
{
get
{
if
(singleton
==
null
)
{
lock
(lockHelper)
{
if
(singleton
==
null
)
singleton
=
new
Singleton();
}
}
return
singleton;
}
}
}
}
//
经典的Singleton实现:仅仅适合无参构造器对象(可用属性实现扩展)
namespace
classicalSingleton
{
sealed
class
Singleton
{
private
Singleton()
{ }
//
内联初始化,后面的new是个静态构造器
public
static
readonly
Singleton Instance
=
new
Singleton();
}
class
Program
{
static
void
Main(
string
[] args)
{
Singleton s1
=
Singleton.Instance;
Singleton s2
=
Singleton.Instance;
if
(
object
.ReferenceEquals(s1, s2))
Console.WriteLine(
"
两个对象是相同的实例。
"
);
else
Console.WriteLine(
"
两个对象非相同的实例。
"
);
}
}
}
查看全文
相关阅读:
Restful api 返回值重复的问题
fastDFS遇到的并发问题recv cmd: 0 is not correct, expect cmd: 100
忽略警告@SuppressWarnings的用法
Mysql 一些命令记录
python 操作excel实现替换特定内容
python 提取目录中特定类型的文件
python使用tkinter无法获取输入框的值
python使用tkinter无法给顶层窗体的输入框设定默认值
游戏基础知识第一弹
python 3.7.4 安装 opencv
原文地址:https://www.cnblogs.com/flaaash/p/1020841.html
最新文章
详解JS与Jquery获得的对象的区别与联系
.net平台下对C#代码的编译
centos7.2下安装mysql5.7数据库
记一次前后端分离开发中遇到的各种坑
浅谈数据库用户表结构设计
node.js解析微信消息推送xml格式加密的消息
win10下安装mysql5.7.25版本
Node编码规范
Invalid Host header
Vue components Cannot read property '__ob__' of undefined
热门文章
node配置微信小程序解密消息以及推送消息
git冲突时解决方法
好的学习网站
Jer.Global.requestParam 查询VM结果
数据标注python
机器学习好的网站
SQL优化
程序员的未来,如何成为更好的管理者
Vscode配置springboot开发环境变量
VMware下载及安装(含破解码)永久使用
Copyright © 2011-2022 走看看