c#设计模式——单例模式

2017-05-08  本文已影响0人  Bob_Running

介绍

实现

  1. 方式一:
public class Singleton
    {
        // 定义一个静态变量来保存类的实例
        private static Singleton uniqueInstance;
        // 定义私有构造函数,使外界不能创建该类实例
        private Singleton()
        {
        }
        <summary>
        /// 定义公有方法提供一个全局访问点,同时你也可以定义公有属性来提供全局访问点
        /// </summary>
        /// <returns></returns>
        public static Singleton GetInstance()
        {
            // 如果类的实例不存在则创建,否则直接返回
            if (uniqueInstance == null)
            {
                uniqueInstance = new Singleton();
            }
            return uniqueInstance;
        }
    }

注意:上面的代码实现,是线程不安全的;

  1. 方式二:
 internal sealed class SR
    {
        private static SR loader;
        internal SR()
        {
        }
        // 主要是因为该类不是公有,所以这个全部访问点也定义为私有的了
        // 但是思想还是用到了单例模式的思想的
        private static SR GetLoader()
        {
            if (loader == null)
            {
                SR sr = new SR();
                Interlocked.CompareExchange<SR>(ref loader, sr, null);
            }
            return loader;
        }

        // 这个公有方法中调用了GetLoader方法的
        public static object GetObject(string name)
        {
            SR loader = GetLoader();
            if (loader == null)
            {
                return null;
            }
            return loader.resources.GetObject(name, Culture);
        }
    }```

上一篇下一篇

猜你喜欢

热点阅读