單例模式(Singleton)

   使用條件:  當系統中只須要某個類的惟一對象時,能夠使用該模式java

        爲何會用到該模式?:由於有時候某些對象的建立須要耗費大量的資源、使用單一(惟一)的對象實例來維護某些共享數據等,在這些場景下便可採用單例模式進行設計,能夠適當地漸少內存開銷,由於此時該惟一對象不會(被限制了)頻繁地建立。spa


第一種:飽漢模式線程

public class SingleTon{設計

   private SingleTon(){ };對象

  private  static  SingleTon    instance = new SingleTon();內存

  public static SingleTon getInstance()資源

   {  get

     return instance;同步

    }class

}


第二種:飢漢模式

public class SingleTon{

        private SingleTon(){};

        private static SingleTon instance = null;//new SingleTonight();

        public static synchronized SingleTon getInstance()

                     {

                            if(instance==null)  instance = new SingleTon();

                           return instance;

                    }

}

這個方法比上面方法有所改進,不用每次都進行生成對象,只是第一次使用生成實例,提升效率。

注意到第二種形式中的synchronized,這個synchronized很重要,若是沒有synchronized線程同時訪問時則可能出現混亂,因此咱們能夠在該方法前加上synchronized關鍵字來保證其被同步訪問。

綜合來講呢,
就是不給外界調用本身構造方法的機會,
而只能經過相似於getInstance()之類的方法獲得此類的實例,
而此實例早已生成,
只能調用,
不能新建,
從而保證了在java應用程序中,一個類只有一個實例存在。

相關文章
相關標籤/搜索