亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > java中什么是單例

      java中什么是單例

      時(shí)間: 歐東艷656 分享

      java中什么是單例

        java模式之單例模式:

        單例模式確保一個(gè)類只有一個(gè)實(shí)例,自行提供這個(gè)實(shí)例并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

        特點(diǎn):

        1,一個(gè)類只能有一個(gè)實(shí)例

        2,自己創(chuàng)建這個(gè)實(shí)例

        3,整個(gè)系統(tǒng)都要使用這個(gè)實(shí)例

        例: 在下面的對(duì)象圖中,有一個(gè)"單例對(duì)象",而"客戶甲"、"客戶乙" 和"客戶丙"是單例對(duì)象的三個(gè)客戶對(duì)象。可以看到,所有的客戶對(duì)象共享一個(gè)單例對(duì)象。而且從單例對(duì)象到自身的連接線可以看出,單例對(duì)象持有對(duì)自己的引用。

        Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類Class只有一個(gè)實(shí)例存在。在很多操作中,比如建立目錄 數(shù)據(jù)庫連接都需要這樣的單線程操作。一些資源管理器常常設(shè)計(jì)成單例模式。

        外部資源:譬如每臺(tái)計(jì)算機(jī)可以有若干個(gè)打印機(jī),但只能有一個(gè)Printer Spooler,以避免兩個(gè)打印作業(yè)同時(shí)輸出到打印機(jī)中。每臺(tái)計(jì)算機(jī)可以有若干個(gè)通信端口,系統(tǒng)應(yīng)當(dāng)集中管理這些通信端口,以避免一個(gè)通信端口被兩個(gè)請(qǐng)求同時(shí)調(diào)用。內(nèi)部資源,譬如,大多數(shù)的軟件都有一個(gè)(甚至多個(gè))屬性文件存放系統(tǒng)配置。這樣的系統(tǒng)應(yīng)當(dāng)由一個(gè)對(duì)象來管理這些屬性文件。

        一個(gè)例子:Windows 回收站。

        在整個(gè)視窗系統(tǒng)中,回收站只能有一個(gè)實(shí)例,整個(gè)系統(tǒng)都使用這個(gè)惟一的實(shí)例,而且回收站自行提供自己的實(shí)例。因此,回收站是單例模式的應(yīng)用。

        兩種形式:

        1,餓漢式單例類

        public class Singleton {

        private Singleton(){}

        //在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?

        //注意這是private 只供內(nèi)部調(diào)用

        private static Singleton instance = new Singleton();

        //這里提供了一個(gè)供外部訪問本class的靜態(tài)方法,可以直接訪問

        public static Singleton getInstance() {

        return instance;

        }

        }

        2,懶漢式單例類

        public class Singleton {

        private static Singleton instance = null;

        public static synchronized Singleton getInstance() {

        //這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次

        //使用時(shí)生成實(shí)例,提高了效率!

        if (instance==null)

        instance=new Singleton();

        return instance;   }

        }

      245929