C# 设计模式-单例模式(Singleton)
2024-10-20 08:42:25
所谓单例模式即所谓的一个类只能有一个实例,说白了,也就是类只能在内部实例一次,然后提供这一实例,外部无法对此类实例化。
单例模式的特点:
1、只能有一个实例;
2、只能自己创建自己的唯一实例;
3、必须给所有其他的对象提供这一实例。
单例模式的创建方法:
1、没有考虑多线程安全问题
public class Singleton
{
private static Singleton _instance = null;
private Singleton(){}
public static Singleton CreateInstance()
{
if(_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
2、考虑多线程安全
public class Singleton
{
private volatile static Singleton _instance = null;
private static readonly object _lockrobject = new object();
private Singleton(){}
public static Singleton CreateInstance()
{
if(_instance == null)
{
lock(_lockrobject )
{
if(_instance == null)
_instance = new Singleton();
}
}
return _instance;
}
}
3、C#,自己主动创建实例
public class Singleton
{
private Singleton(){}
public static readonly Singleton instance = new Singleton();
}
单例模式的应用:
1、MDI窗体使用单例模式可以防止窗体被实例化多次。
最新文章
- HTML5知识初级题目
- python之路四
- python2.x与3.x差别
- uva 10791
- [Editor(typeof(ImageUrlEditor), typeof(UITypeEditor))]无效的可能原因
- linux 克隆:device eth0 does not seem to be present,delaying initialization
- ubuntu设置字体编码GBK和UTF-8
- spring mvc 注解入门示例
- JavaScript刷新页面的方法(包括Frame框架的刷新方式)
- PL/SQL 编程(三 )程序包和包体,触发器,视图,索引
- 花10分钟搞懂开源框架吧 - 【NancyFx.Net】
- HTML5的优点与缺点?
- Linux git 在自己的服务器上建立 git 仓库(repository)
- axis2与cxf区别
- MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I
- 百度 echarts
- Identifier:GUID (全局唯一标识符)
- c++第十五天
- 报错:Cannot create PoolableConnectionFactory (The server time zone value 'CST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverT
- 原生js追加Html 或者text