代码改变世界

C# 设计模式-单例模式(Singleton)

2016-01-27 12:23  孙启亮  阅读(3469)  评论(0编辑  收藏  举报

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

单例模式的特点:

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