設計模式-單例模式

//懶漢式
private static readonly object obj = new object();
        private static DbConnection dbConnection;
        private DbConnection()
        {
        }
        public static DbConnection getDbConnection()
        {
            if (dbConnection == null)
            {
                lock (obj)
                {
                    if (dbConnection == null)
                    {
                        dbConnection = new DbConnection();
                    }
                }
            }            
            return dbConnection;
        }
        public void openConnection()
        {
            Console.WriteLine("開啓數據庫連接");
        }

        //餓漢式
        private static readonly DbConnection dbConnection = new DbConnection();
        private DbConnection()
        { }
        public static DbConnection getDbConnection()
        {
            return dbConnection;
        }
        public void openConnection()
        {
            Console.WriteLine("開啓數據庫連接");
        }
                //懶漢式
            //DbConnection dbConnection= DbConnection.getDbConnection();
            //DbConnection dbConnection2 = DbConnection.getDbConnection();
            //dbConnection.openConnection();
            //if (dbConnection == dbConnection2)
            //{
            //    Console.WriteLine("相同的");
            //}
            //Console.ReadLine();
            //餓漢式
            DbConnection dbConnection = DbConnection.getDbConnection();
            DbConnection dbConnection2 = DbConnection.getDbConnection();
            if (dbConnection == dbConnection2)
            {
                Console.WriteLine("相同的");
            }
            Console.ReadLine();

總結:保證類只有一個實例(自己完成自己的實例化),並且 提供一個全局訪問點。
懶漢式:在第一次被引用的時候實例化,不提前佔資源,但需要雙重鎖保證線程安全。
餓漢式:被加載時實例化,需要提前佔用資源。

與靜態方法區別:
1、靜態方法裏面的對象使用過後會釋放,頻繁使用釋放也耗資源;單例由於有一個實例化,會一直存在。
2、單例可以繼承類,實現接口,方法可以被重載。
3、單例比靜態方法更靈活。
設計模式-單例模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章