zoukankan      html  css  js  c++  java
  • 关于单例的泛型实现,悲哀啊

    自己在做一个Unity的小项目,想在UI上不使用脚本继承MonoBehavior然后挂在物体上的方式。于是想写一个单例的UIBase类,子类继承UIBase同时也复用UIBase的单例,这样不用每写一个子类就写一遍单例。于是在网上找到不少人写的单例的泛型实现:

        //父类
        public class Person<T> where T : class, new()
        {
            private static T _instance;
            private static readonly object syslock = new object();
            public static T GetInstance()
            {
                if (_instance==null)
                {
                    lock (syslock)
                    {
                        _instance = new T();
                    }
                }
                return _instance;
            }
        }
    
        //子类
        public class Student : Person<Student>
        {
        }
    
        //或者:
        public class Student
        {
            public static Student GetInstance()
            {
                return Person<Student>.GetInstance();
            }
        }
    
        //调用
        Student.GetInstance(); 

    这种写法子类无法私有化构造方法,因为子类作为泛型T必须具有公用的无参构造,完全违背了单例。单例最核心的东西都没理解到,只想着实现GetInstance公用访问就行了!

  • 相关阅读:
    POJ 1315 Don't Get Rooked
    POJ 2051 Argus
    POJ 1942 Paths on a Grid
    POJ 2151 Check the difficulty of problems
    POJ 3349 Snowflake Snow Snowflakes
    POJ 1753 Flip Game
    POJ 2392 Space Elevator
    POJ 2385 Apple Catching
    POJ 2356 Find a multiple
    POJ 2355 Railway tickets
  • 原文地址:https://www.cnblogs.com/fuyunzzy/p/7863770.html
Copyright © 2011-2022 走看看