友情提醒
先看文章目錄,大致了解知識點結構,直接點擊文章目錄可以跳轉到文章指定位置。
一、什么是設計模式
1)設計模式簡述
設計模式就是設計出來的固定問題的解決方法,描述了在軟件設計過程中的一些不斷重復發(fā)生的問題和解決方案。遇到類似問題的時候可以直接使用現(xiàn)成的模式方案。
2)什么是單例設計模式
①單例模式中一個類只能有一個實例,由該單例類自行實例化并向整個系統(tǒng)提供這個實例。
3)單例設計模式思路
①要保證單例,就不能讓外界隨便創(chuàng)建對象,就需要將構造函數(shù)私有化,讓外界無法訪問構造函數(shù)。
②外界無法創(chuàng)建就只能在本類中創(chuàng)建這個唯一的對象。
③在本類創(chuàng)建對象需要成員變量接收這個對象,為了不讓外界訪問這個成員變量所以也用private修飾,在使用這個變量之前還沒有對象,所以這個變量必須是靜態(tài)的用static修飾。
④提供方法訪問,只有訪問這個方法之后才會有對象,所以這個方法應該是靜態(tài)的
二、餓漢式
1)餓漢式單例設計模式的特點
①餓漢式模式的特點是類一旦加載就創(chuàng)建一個單例,保證在調用 getInstance (獲取實例)方法之前單例就已經(jīng)存在了。(比較餓,沒喊就迫不及待的創(chuàng)建了)。
②好處:就算在多線程環(huán)境下,也一定可以保證對象是唯一的。弊端:創(chuàng)建比較早,有浪費內存的現(xiàn)象。文章來源:http://www.zghlxwxcb.cn/news/detail-443676.html
2)實現(xiàn)一個餓漢式單例設計
public class Test1{
//1、私有化本類所有的構造方法
private Test1(){}
//2、直接在本類中創(chuàng)建唯一對象
private static Test1 t1 = new Test1();
//3、提供外界獲取唯一對象的方法(公共的、靜態(tài)的)
public static Test1 getInstance(){
return t1;
}
}
三、懶漢式
1)懶漢式單例設計模式的特點
①懶漢式模式的特點是類加載時沒有生成單例,只有當?shù)谝淮握{用 getlnstance (獲取實例)方法 時才去創(chuàng)建這個單例。(比較懶別人喊一次才動一次?)。
②好處:不存在浪費內存的問題,弊端:在多線程環(huán)境下,可能不能保證對象是唯一的文章來源地址http://www.zghlxwxcb.cn/news/detail-443676.html
2)實現(xiàn)一個懶漢式單例設計
public class Test2{
//1、私有化本類所有的構造方法
private Test2(){ }
//private和static修飾的成員變量
private static Test2 t2;
//3、提供外界獲取唯一對象的方法(公共的、靜態(tài)的)
public static Test2 getInstance(){
if(t2 == null){
//2、在本類中創(chuàng)建唯一對象
t2 = new Test2();
}
return t2;
}
}
到了這里,關于Java中單例(單態(tài)、原子)設計模式(餓漢式/懶漢式)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!