美文网首页
单例模式

单例模式

作者: 小小青蛙不怕风吹雨打 | 来源:发表于2017-06-29 20:35 被阅读0次

    单例模式,最简单的模式

    1. 提供方便的全局访问入口
    2. 提供一个简单的对象管理

    注意!!!

    1. 容易导致代码耦合严重
    2. 基本是不能用于多线程的程序的,需要加锁
    3. 多组单例可以通过修改GetInstance()的代码实现

    《游戏编程模式》里把单例模式拎出来批判了一番。
    心中默默记下,尽量不要使用单例模式。
    实际发现,要是不用单例模式,好像都不会写代码了。
    总不能想lua的源码一样,每个函数都加个环境参数state吧。

    c#实现

    namespace XUtils
    {
        public abstract class XBaseSingleton
        {
            public abstract bool Init();
            public abstract void Uninit();
        }
    
        /// <summary>
        /// 单例模版
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public abstract class XSingleton<T>: XBaseSingleton where T: new()
        {
            // add restriction
            protected XSingleton()
            {
                if(_instance != null)
                {
                    throw new Exception(_instance.ToString() + @" can not be created again.");
                }
                Init();
            }
    
            private static readonly T _instance = new T();
    
            public static T singleton
            {
                get
                {
                    return _instance;
                }
            }
    
            public override bool Init() { return true; }
            public override void Uninit() { }
        }
    }
    
    // use
    class TestSingleton:XSingleton<TestSingleton>
    {
    }
    
    // 之后用 TestSingleton.singleton访问就好了,十分方便
    

    相关文章

      网友评论

          本文标题:单例模式

          本文链接:https://www.haomeiwen.com/subject/zcyvcxtx.html