Java設(shè)計(jì)模式之單例模式實(shí)例詳解【懶漢式與餓漢式】
本文實(shí)例講述了Java設(shè)計(jì)模式之單例模式。分享給大家供大家參考,具體如下:
單例模式就是產(chǎn)生一個(gè)對(duì)象實(shí)例,供外外部訪問。
它的應(yīng)用場(chǎng)景就是在這個(gè)類在全局真資源需要統(tǒng)一訪問,否則會(huì)造成混亂時(shí),才有必要設(shè)計(jì)成單例。
懶漢式,就是在使用這個(gè)對(duì)象時(shí),才去查看這個(gè)對(duì)象是否創(chuàng)建,如果沒創(chuàng)建就馬上創(chuàng)建,如果已經(jīng)創(chuàng)建,就返回這個(gè)實(shí)例。
餓漢式,在加載這個(gè)類的時(shí)候就先創(chuàng)建好一個(gè)對(duì)象實(shí)例,等待調(diào)用。
兩者的優(yōu)缺點(diǎn)也能猜到,使用懶漢式,在反應(yīng)速度上肯定要比餓漢式慢。
但是這個(gè)對(duì)象如果不被調(diào)用,那就節(jié)省了cpu和內(nèi)存資源。
模式很簡(jiǎn)單,下面給出實(shí)例。
package org.test.design.single;
/**
* 懶漢式,單例模式
* @author lushuaiyin
*
*/
public class Loon {
public static Loon loon=null;
public static Loon getInstance(){
if(loon==null){
loon=new Loon();
}
return loon;
}
}
package org.test.design.single;
/**
* 餓漢式,單例模式
* @author lushuaiyin
*
*/
public class Hunger {
public static Hunger hunger=new Hunger();
public static Hunger getInstance(){
return hunger;
}
//或者像下面使用
// public static Hunger hunger=null;
// static{
// if(hunger==null){
// hunger=new Hunger();
// }
// }
// public static Hunger getInstance(){
// return hunger;
// }
}
測(cè)試
package org.test.design.single;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
//懶漢式,單例模式
Loon loon=Loon.getInstance();
System.out.println(loon==null);
//餓漢式,單例模式
Hunger hunger=Hunger.getInstance();
System.out.println(hunger==null);
}
}
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
js中去除字符串中所有的html標(biāo)簽代碼實(shí)例
這篇文章主要介紹了js中去除字符串中所有的html標(biāo)簽代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Spring?Security權(quán)限管理小結(jié)
SpringSecurity是一個(gè)權(quán)限管理框架,核心是認(rèn)證和授權(quán),前面已經(jīng)系統(tǒng)的給大家介紹過了認(rèn)證的實(shí)現(xiàn)和源碼分析,本文重點(diǎn)來介紹下權(quán)限管理,需要的朋友可以參考下2022-08-08
Spring boot實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了Spring boot實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Java使用excel工具類導(dǎo)出對(duì)象功能示例
這篇文章主要介紹了Java使用excel工具類導(dǎo)出對(duì)象功能,結(jié)合實(shí)例形式分析了java創(chuàng)建及導(dǎo)出Excel數(shù)據(jù)的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
詳解Java編程中final,finalize,finally的區(qū)別
這篇文章主要介紹了詳解Java編程中final,finalize,finally的區(qū)別,這個(gè)在Java面試題中簡(jiǎn)直是太常見了...需要的朋友可以參考下2015-11-11

