runxinzhi.com
首页
百度搜索
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(
"
两个对象非相同的实例。
"
);
}
}
}
相关阅读:
Spark学习进度1——Scala安装
Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
Spark学习进度2——Scala基础
自我成长
node服务容器 serve 和 httpserve
TS中接口
js计算当前时间差
【转载】 centos7.0 安装字体库
Python 二进制 雪花算法
Django 重新生成表结构
原文地址:https://www.cnblogs.com/flaaash/p/1020841.html
最新文章
20220319 14:40:46
20220319 14:46:33
20220321 08:00:02
20220319 14:01:51
20220319 14:02:17
20220319 14:51:34
20220319 14:35:34
20220319 14:53:02
架构漫谈(王概凯)前四章读后感
Python窗口学习之监听窗口变化触发函数
热门文章
Python窗口学习之给按钮美化
Python窗口学习之搜索框美化
架构漫谈(王概凯)后五章读后感
Python窗口学习之浅尝按键触发事件
Python读文件并写入数组
返校第一周周总结
PYthon窗口学习之用异步请求解决Treeview列表插入大量数据反应慢的解决办法
初三
golang两个协程交替打印出1100
spark学习进度10——spark概述与安装
Copyright © 2020-2023
润新知