本身在作一個Unity的小項目,想在UI上不使用腳本繼承MonoBehavior而後掛在物體上的方式。因而想寫一個單例的UIBase類,子類繼承UIBase同時也複用UIBase的單例,這樣不用每寫一個子類就寫一遍單例。因而在網上找到很多人寫的單例的泛型實現:blog
//父類 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公用訪問就好了!繼承