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(
"
两个对象非相同的实例。
"
);
}
}
}
查看全文
相关阅读:
学习笔记 线程异步请求过程
学习笔记 urllib
学习笔记 requests + BeautifulSoup
python3 kmp 字符串匹配
python3:实现字符串的全排列(有重复字符)
python3:实现字符串的全排列(无重复字符)
python 贝叶斯算法
knn算法
python基础5
python基础4
原文地址:https://www.cnblogs.com/flaaash/p/1020841.html
最新文章
模板与泛型编程
继承和面向对象设计
实现
设计与声明
资源管理
构造/析构/赋值运算
一.让自己习惯c++
IO 特性
google-命名约定
数字特征:协方差 & 相关系数
热门文章
数字特征:方差
数学:概率:数字特征
数字特征:数学期望(均值)
数学:统计:基本概念
历史:古代:西汉
历史:古代:东周
历史:古代:三国
兴趣爱好目录大纲
数学:概率:基本概念
python3 lcs 最大公共子序列
Copyright © 2011-2022 走看看