在類和物件的學習中,有一種類只能例項化一次,這種叫做單例模式;
單例模式又分為兩種,一種是餓漢式單例模式,另一種是懶漢式單例模式,首先讓我們來看一下單例模式:
單例模式又稱為singleton模式,指的是乙個類在jvm中只有乙個例項存在;
餓漢式單例模式:對於乙個類,在例項化它的過程中採用private static修飾之後,在獲取它的時候就需要定義乙個public static 類名 getinstance()方法,在主方法的設定中,就需要用類名.getinstance來建立乙個物件,如果我們建立多個,那麼它們其實都是同乙個物件,這些可以通過下面**說明:
懶漢式單例模式:懶漢式單例模式和餓漢式單例模式不同,只有呼叫getinstance的時候才會建立例項;public class person
//準備乙個引用,指向乙個例項化物件
private static person person = new person();
//提供給呼叫者獲取12行定義的物件
public static person getinstance()
public static void main(string args)
}
什麼是例項模式?public class person
//準備乙個引用,指向乙個例項化物件
private static person person ;
//提供給呼叫者獲取12行定義的物件
public static person getinstance()
return person;
} public static void main(string args)
}
例項模式的三要素:
構造方法私有化,
靜態屬性指向例項,
public static 的getinstance方法,返回第二步的靜態屬性。
什麼時候使用餓漢式?什麼時候使用懶漢式?
餓漢式是立即載入的方式,無論是否用到這個物件,都會被載入。
懶漢式是延遲載入的的方式,只有使用的時候才會去載入。
如果業務上有比較充分的啟動和初始化時間就使用餓漢式,否則使用懶漢式。
列舉型別:關於列舉型別,我們來看乙個簡單的例子;
接下來我們來做乙個假設,如果我使用case 1:case 2:case 3:case 4:來進行判斷,即傳入的不是列舉型別,而是int型別,這樣會出現乙個問題,就是在傳入的過程中如果傳入了5,那麼就會出現不在判斷範圍內的情況,但是使用列舉型別就不會出現這種情況,因為它已經牢牢的把引數的範圍限制在了列舉資料的型別中,不會出現意外的情況;public class season
public static void main(string args)
}}
除此之外,我們依然可以使用增強的for迴圈來進行對列舉型別進行輸出:
輸出結果是:spring summmer autumn winterpublic class season
//利用增強的for迴圈來輸出列舉型別
public static void main(string args)
}}
java基礎 單例模式
單例模式 singleton模式 乙個類有且僅有乙個例項,並且自行例項化向整個系統提供 公開 具體實現的角度來說 構造方法私有化 靜態屬性指向例項 public static的getinstance方法,返回第二部的靜態屬性 餓漢模式,無論如何都會建立乙個例項 例子取自 以lol中的大龍 giant...
單例模式之列舉單例
列舉也是餓漢式。列舉單例 問題1 列舉單例是如何限制例項個數的 反編譯後可以看到 就是我們列舉類的乙個靜態成員變數而已,單例項的 問題2 列舉單例在建立時是否有併發問題 沒有,因為它也是靜態成員變數,它的執行緒安全性也是在類載入階段完成的。那個時候不會有執行緒併發問題 問題3 列舉單例能否被反射破壞...
Java基礎 設計模式 單例模式
單例模式,顧名思義,即只能建立乙個物件,是一種十分常見的設計模式。下面介紹一下兩種比較簡單的單例模式 1 餓漢式 不可以延時載入,類載入的時候就建立物件。如果沒有用到這個物件的話,就會導致資源浪費。2 懶漢式 可以延時載入,即用到物件的時候再new物件。但是必須考慮同步問題,如果不考慮,當多個執行緒...