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(
"
两个对象非相同的实例。
"
);
}
}
}
查看全文
相关阅读:
Flume基础(一):概述
Hive高级(2):优化(2) 表的优化
ospf命令
Verizon 和某 BGP 优化器如何在今日大范围重创互联网
BGP数据中心鉴别方法
多线BGP鉴定
mpls ldp neighbor 和loopbak
ospf默认路由
ospf
ubuntu cloud init获取元数据失败
原文地址:https://www.cnblogs.com/flaaash/p/1020841.html
最新文章
Graphic32中TBitmap32.TextOut性能分析[转载]
ckeditor粘贴word图片且图片自动上传源码
ckeditor粘贴word图片且图片自动上传代码
ckeditor粘贴word图片且图片自动上传插件
ckeditor粘贴word图片且图片自动上传组件
ckeditor粘贴word图片且图片自动上传控件
ckeditor粘贴word图片且图片自动上传功能
ckeditor粘贴word图片且图片文件自动上传源代码
ckeditor粘贴word图片且图片文件自动上传源码
ckeditor粘贴word图片且图片文件自动上传代码
热门文章
ckeditor粘贴word图片且图片文件自动上传插件
Java实现 LeetCode 594 最长和谐子序列(滑动窗口)
Flume基础(九):企业开发案例(六)
Flume基础(八):企业开发案例(五)
Flume基础(七):企业开发案例(四)
Flume基础(六):企业开发案例(三)
Flume基础(五):企业开发案例(二)
Flume基础(四):企业开发案例(一)
Flume基础(三):Flume 监控之 Ganglia
Flume基础(二):快速入门
Copyright © 2011-2022 走看看