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(
"
两个对象非相同的实例。
"
);
}
}
}
查看全文
相关阅读:
flutter 刷新和初始化
flutter 复杂数据模型 转换
flutter 刷新组件
flutter wrap 流式布局
添加横纵布局 和 页面保活
跳转首页结构并且加载launch插件
迟到的AFO
[ELSE]自闭选手的自我修养
[题解]UOJ#41 矩阵变换
[题解]HDU 3555 Bomb
原文地址:https://www.cnblogs.com/flaaash/p/1020841.html
最新文章
fileupload图片预览功能
textbox button 模拟fileupload
囧途
Office2010与vs2008不兼容导致的一系列问题(vs设计视图打不开,无法启动Asp.Net Development Server)
vs安装后当切换到图形设计界面的时候自动弹出“正在准备安装的提升”,然后程序处于假死状态
c++常用摘抄(一)
KMP算法_学习笔记
游船费问题——动态规划
大数阶乘
高精度四则运算之加法实现——参考ACM/ICPC程序设计与分析(c++实现)chapter4
热门文章
0-1背包问题——动态规划
求序列1和序列2的最长公共子序列-基于动态规划方法
字典升序问题
数字统计问题
基于完全二叉树的极大堆的上下漂移实现
实践出真知(一)
使用umeng 的微信出现未验证应用的总结
Ios Lru 实例对比-YYCache 与 afn 的对比
flutter 路由 fluro
flutter 状态保持之provide
Copyright © 2011-2022 走看看