不积跬步,无以致千里;不积小流,无以成江海

导航

用泛型做一个通用的单件模式

相信大家经常用到单件模式.经常重复的写着部分代码来实现单件.我粘一段可以重用的单件模式供大家参考.与以前的大家经常写的相比,各有优缺点,各位自行取舍.

 

    public class SingletonDome

    {

        public SingletonDome()

        {

        }

 

        public static SingletonDome instance

        {

            get

            {

                return Singleton<SingletonDome>.Instance;

            }

        }

    }

 

    public class Singleton<T> where T : new()

    {

        public static T Instance

        {

            get { return SingletonCreator.instance; }

        }

 

        class SingletonCreator

        {

            internal static readonly T instance = new T();

        }

    }

 

先说优点:正如大家所见,只需要调用泛型 Singleton<T>.Instance就可以实现单件模式了.而且可以重用,任何要实现单件的类都是一句话就行了.

缺点:由于在类SingletonCreator 里面要实例化具体的类,导致类的构造函数必需让Singleton<T>可以访问,可能导致调用者直接new一个实例而不使用单件(根据回复.修改了一下,另外线程是安全的)

posted on 2007-07-17 14:25  Dream.Lee  阅读(2316)  评论(10编辑  收藏  举报