所谓单例模式即所谓的一个类只能有一个实例,说白了,也就是类只能在内部实例一次,然后提供这一实例,外部无法对此类实例化。

单例模式的特点:

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窗体使用单例模式可以防止窗体被实例化多次。

最新文章

  1. HTML5知识初级题目
  2. python之路四
  3. python2.x与3.x差别
  4. uva 10791
  5. [Editor(typeof(ImageUrlEditor), typeof(UITypeEditor))]无效的可能原因
  6. linux 克隆:device eth0 does not seem to be present,delaying initialization
  7. ubuntu设置字体编码GBK和UTF-8
  8. spring mvc 注解入门示例
  9. JavaScript刷新页面的方法(包括Frame框架的刷新方式)
  10. PL/SQL 编程(三 )程序包和包体,触发器,视图,索引
  11. 花10分钟搞懂开源框架吧 - 【NancyFx.Net】
  12. HTML5的优点与缺点?
  13. Linux git 在自己的服务器上建立 git 仓库(repository)
  14. axis2与cxf区别
  15. MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I
  16. 百度 echarts
  17. Identifier:GUID (全局唯一标识符)
  18. c++第十五天
  19. 报错: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
  20. 原生js追加Html 或者text

热门文章

  1. cocos studio pageview看不到indicator指示点
  2. daemon Thread
  3. Codeforces 834D The Bakery 【线段树优化DP】*
  4. Linux环境下Maven的.m2文件夹
  5. listener单点登录和在线人数
  6. 使用Maven运行Solr(翻译)
  7. java web 程序---刷新页面次数进一步
  8. ptyhon中文本挖掘精简版
  9. 任性不用for
  10. iis 重新安装后 重新注册asp.net