码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-26 09:18:04      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:单例模式   singleton   设计模式   

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

认识单例模式

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

示例代码

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");
    }
}

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

标签:单例模式   singleton   设计模式   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!