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(
"
两个对象非相同的实例。
"
);
}
}
}
查看全文
相关阅读:
书单
parzen 窗的matlab实现
Oracle-07
图片加载不出来
省市区三表建立及数据插入
a链接与button按钮混用
省市区三级联动,获取地区编号,JSON格式
纯JS省市区三级联动
JDK与JRE的区别
web-03-jQuery
原文地址:https://www.cnblogs.com/flaaash/p/1020841.html
最新文章
软考错题合集之15-11-AM
软考考前冲刺第九,十章多媒体基础知识知识产权基础知识
软考考前冲刺第八章信息安全知识
Oracle 数据库基础
用户七天免登录(记住密码)
发送邮件(三)
复选框传值(接上个项目)
全选,选中删除功能的实现(含母版页-精简)
发送邮件 (二)
发送邮件(一)
热门文章
Java基础(五)
Java基础 (四)
模式识别课堂笔记之聚类(1)
数据存储
马尔科夫随机场(MRF)及其在图像降噪中的matlab实现
BP的matlab实现
模式识别课堂笔记 ——深度学习
指数族函数及其充分统计量
ROC 曲线
Linux vi & bash使用笔记
Copyright © 2011-2022 走看看