1. 程式人生 > >設計模式_單例模式

設計模式_單例模式

對象 pre dconf 分類 好的 file 內存 new unique

1.面向對象,變化隔離出來,壓縮到最小
類與對象的交互。

模式分類:
1.從目的來講:
1.創建型:負責創建對象
2.結構型:處理類與對象之間的組合
3.行為型:類與對象交互中的職責分配。
2.從範圍來講:
1.類模式: 處理類與子類的靜態關系。在編譯的時候,就確定下來。
2.對象模式:對象之間的動態關系,運行在內存之間。

3.設計模式
(1)單例模式
動機:Motivation .
保證在系統中,只有一個實例,才能保證邏輯正確性,以及良好的效率。

單例模式:應該由設計者負責,類本身負責,而不是使用者的責任。

繞過常規的構造器,提供一種機制來保證一個類只有一個實例。

比如:
private string configs;
public string Configs{
    get{
        if(configs==null){
            configs=ReadConfigFormFile();
        }
        return configs;
    }
}

目的:
這個,如果是程序只有一個人開發的,也可以保證,只有一個實例。但是,你怎麽保證,別人開發的時候,不會去new這個東西,去創建這個東西?

應該是設計者的責任,而不是使用者的責任,不是告訴使用者,只能創建一次。

繞過常規構造器,提供一個機制來保證一個類只有一個實例。
意圖(Intent):
    保證一個類只有一個實例,並提供一個該實例的全局訪問點。

Singleton
    static instance()       return uniqueInstance
    SingletonOperation()
    GetSingletonData()
    -
    static uniqueinstance
    singletonData

使用靜態的方式,來構造實例,把構造器的調用約束起來。

(1.1)單線程Singleton模式實現
    
    public class Singleton{
        private Singleton(){}
        private static Singleton instance;
        public static Singleton Instance{
            get{
                if(instance==null){
                    instance=new SingletonInstance();
                }
                return instance;
            }
        }
    }

設計模式_單例模式