這篇文章主要講解了“java單例設(shè)計模式的概念”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java單例設(shè)計模式的概念”吧!
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括嵐皋網(wǎng)站建設(shè)、嵐皋網(wǎng)站制作、嵐皋網(wǎng)頁制作以及嵐皋網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,嵐皋網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到嵐皋省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
單例設(shè)計模式概述:
單例模式就是要確保類在內(nèi)存中只有一個對象,該實例必須自動創(chuàng)建,并且對外提供
單例模式有以下特點:
1、單例類只能有一個實例。
2、單例類必須自己自己創(chuàng)建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。
單例模式分三種:
懶漢式單例
餓漢式單例
登記式單例
單例模式確保某個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。在計算機系統(tǒng)中,線程池、緩存、日志對象、對話框、打印機、顯卡驅(qū)動程序?qū)ο蟪1辉O(shè)計成單例。這些應(yīng)用都或多或少具有資源管理器的功能。每臺計算機可以有若干個打印機,但只能有一個Printer Spooler,以避免兩個打印作業(yè)同時輸出到打印機中。每臺計算機可以有若干通信端口,系統(tǒng)應(yīng)當集中管理這些通信端口,以避免一個通信端口同時被兩個請求同時調(diào)用。
餓漢式單例代碼如下:
public class Student {
//構(gòu)造私有
private Student(){
}
// 自己造一個
// 靜態(tài)方法只能訪問靜態(tài)成員變量,加靜態(tài)
// 為了不讓外界直接訪問修改這個值,加private
private static Student s = new Student();
//提供公共的訪問模式
//為了保證外界能夠直接使用該方法,加靜態(tài)
public static Student getStudent(){
return s;
}
}
餓漢式在類創(chuàng)建的同時就已經(jīng)創(chuàng)建好一個靜態(tài)的對象供系統(tǒng)使用,以后不再改變,所以天生是線程安全的。
懶漢式代碼如下:
public class Teacher {
private Teacher() {
}
private static Teacher t = null;
public synchronized static Teacher getTeacher() {
// t1,t2,t3
if (t == null) {
//t1,t2,t3
t = new Teacher();
}
return t;
}
}
懶漢式單例是線程不安全的,需要在getTeacher()方法上加上synchronized來保證線程的安全
感謝各位的閱讀,以上就是“java單例設(shè)計模式的概念”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對java單例設(shè)計模式的概念這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!