Singleton模式(单例模式) 饿汉式和懒汉式
生活随笔
收集整理的這篇文章主要介紹了
Singleton模式(单例模式) 饿汉式和懒汉式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目的:整個(gè)應(yīng)用中有且只有一個(gè)實(shí)例,所有指向該類型實(shí)例的引用都指向這個(gè)實(shí)例。
好比一個(gè)國家就只有一個(gè)皇帝(XXX),此時(shí)每個(gè)人叫的“皇帝”都是指叫的XXX本人;
?
常見單例模式類型:
餓漢式單例:直接將對象定義出來
懶漢式單例:只給出變量,并不將其初始化;
?
總結(jié):
餓漢式,static修飾,隨著類的加載而加載,會損耗性能,但是方法相對簡單
懶漢式? 第一次用的時(shí)候相對較慢,因?yàn)樾枰虞d!線程,不安全!
?
package reviewDemo; //單例模式//餓漢式,直接把對象構(gòu)造出來 class SingleDemo{private static SingleDemo s1 = new SingleDemo();private SingleDemo(){//提供私有化的構(gòu)造方法,那么外界就不能構(gòu)造對象了! }public static SingleDemo getS1() {return s1;} }//懶漢式,先定義,但是不創(chuàng)建對象 class SingleDemo2{private static SingleDemo2 s3 ;private SingleDemo2(){//提供私有化的構(gòu)造方法,那么外界就不能構(gòu)造對象了! }public static SingleDemo2 getS3() {//這是一個(gè)方法,返回值為創(chuàng)建的對象!if(s3 == null){s3 = new SingleDemo2();}//和餓漢式的區(qū)別,此時(shí)才來創(chuàng)建對象!return s3;} }public class Demo14 {public static void main(String[] args) {SingleDemo s1 = SingleDemo.getS1();SingleDemo s2 = SingleDemo.getS1();SingleDemo2 s3 = SingleDemo2.getS3();SingleDemo2 s4 = SingleDemo2.getS3();System.out.println(s1 == s2);System.out.println(s3 == s4);} }輸出:true true備注:枚舉更加安全些 package reviewDemo;enum Stu{jake;//將構(gòu)造方法私有化起來,反射也不能創(chuàng)建對象,安全private Stu(){} }public class Demo15 {public static void main(String[] args) {} }?
轉(zhuǎn)載于:https://www.cnblogs.com/whu-2017/p/9227695.html
總結(jié)
以上是生活随笔為你收集整理的Singleton模式(单例模式) 饿汉式和懒汉式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中行信用卡积分怎么算
- 下一篇: 5年制大专第二年结束入伍享受退役军人事务