首页 > 其他 > 详细

五分钟一个设计模式之单例模式

时间:2015-05-26 09:14:48      阅读:177      评论:0      收藏:0      [点我收藏+]

五分钟一个设计模式,用最简单的方法来描述设计模式。

认识单例模式

单例模式是一个非常简单的设计模式,它的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点
有些数据库操作类或者工具类会使用单例模式。

示例代码

public class Singleton
{
    //将构造函数声明为private,防止外界直接通过构造函数来创建对象,只能在类内部创建对象
    private Singleton()
    { }

    private static Singleton uniqueInstance;


    public static Singleton GetInstance()
    {
        lock (uniqueInstance)
        {
            //当需要创建对象时,调用私有的构造函数来创建
            //下次调用时,对象不为null,就直接返回对象实例了,
            //所以,uniqueInstance值会被实例化一次,
            //Singleton类也只有这么一个对象
            if (uniqueInstance == null)
                uniqueInstance = new Singleton();
            return uniqueInstance;
        }
    }

    public void DoSomething()
    {
        Console.WriteLine("do something with unique instance");
    }
}

外界的程序在任何地方都可以通过并且只能通过Singleton.GetInstance()来获取Singleton的对象实例

这个类是用C#描述的。上面的代码并没有直接实例化uniqueInstance对象,而是当调用GetInstance方法时才实例化uniqueInstance对象,这种方式成为懒汉式实现。lock (uniqueInstance)是为了实现线程间的互斥访问,处于线程安全的考虑。

还有一种方式时饿汉式实现。这种方式更加简单,不需要考虑线程安全

public class Singleton
{
    //将构造函数声明为private,防止外界直接通过构造函数来创建对象,只能在类内部创建对象
    private Singleton()
    { }

    private static Singleton uniqueInstance = new Singleton();

    public static Singleton GetInstance()
    {
        return uniqueInstance;
    }

    public void DoSomething()
    {
        Console.WriteLine("do something with unique instance");
    }
}

五分钟一个设计模式之单例模式

原文:http://blog.csdn.net/daguanjia11/article/details/46002469

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!