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

【设计模式】 单例模式

时间:2014-11-24 14:55:28      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   sp   on   div   log   bs   

【设计模式】 单例模式 (类只允许实例化一次)

一. 代码实现

  1. 私有构造函数 + 私有静态变量 + 公开静态函数

    a. 代码简洁,但使用静态变量和静态函数会一直占用内存,不过已现在的硬件配置,无所谓了

    b. 代码

  

        private SingletonClass() { }
        private static SingletonClass Instance = new SingletonClass();
        public static SingletonClass GetInstance()
        {
            return Instance;
        }

  2. 双判断 + 单锁  

        private static SingletonClass _instance;
        private static readonly object LockObj = new object();
        public static SingletonClass GetInstance()
        {
            if (_instance == null)
            {
                lock (LockObj)
                {
                    if (_instance == null)
                    {
                        _instance = new SingletonClass();
                    }
                }
            }
            return _instance;
        }

  3.  泛型单例

  

    public class Singleton<T> where T : new()
    {
        private static T _instance = new T();
        private static readonly object _lockObj = new object();
        private Singleton(){}
        public static T GetInstance()
        {
            if (_instance == null)
            {
                lock (_lockObj)
                {
                    if (_instance == null)
                    {
                        _instance = new T();
                    }
                }
            }
            return _instance;
        }
    }

 

 

【设计模式】 单例模式

标签:style   blog   color   使用   sp   on   div   log   bs   

原文地址:http://www.cnblogs.com/fzz2727551894/p/4118495.html

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