昨天同事問到:單例模式和全局變量有何區別?
全局變量可以創建多個實例,但單例模式只能創建一個(每次得調用GetInstance()之類的唯一方法得到);
而全局變量的class,你可以在任何包含它的地方實例化對象,A a,A b; and so on;
但對於單例模式,無論在哪:A a = GetInstance(), A b = GetInstance();除此之外,更無他法,因此單例模式自己負責創建唯一實例;你絕不可能創建 A a;因為它的構造函數是private的。另外全局的話,就只有一般性,木有什么變化了;在想要的地方給予一定的參數來得到這個唯一對象,應該才是滿足需要的。
當然全局對象無論用到與否都已經創建了,ok,無可挽回了,stack上;
但單例的話,哪里第一次用,哪里開始創建。
更酷的是這個singleton class可以被繼承,因此可以被擴展,這個代碼我還真木有寫過。