java中設(shè)計(jì)模式(多例)的實(shí)例詳解
java中設(shè)計(jì)模式(多例)的實(shí)例詳解
多例:單例設(shè)計(jì)模式的變形,可以看成是一個(gè)緩存池的單例,而緩存池里面可以存多個(gè)數(shù)據(jù)
實(shí)例代碼:
//單例+緩存---沒(méi)有控制池大小
public class A {
//1創(chuàng)建一個(gè)單例的池
(private即把池封裝成單例了)
private static Map<String, A> pool = new HashMap<String, A>(); //池--集合: Map:key-value
public synchronized static A getInstance(String key){
//2根據(jù)key到池中去獲取obj
A obj = pool.get(key);
if(obj==null){
obj = new A();
pool.put(key, obj);
}
//3如果該obj存在則返回,否則創(chuàng)建一個(gè)新的放入池中并返回
return obj}}
import java.util.HashMap;
import java.util.Map;
//單例+緩存---控制池大小,每個(gè)對(duì)象的key值由該類內(nèi)部指定
public class A {
//1創(chuàng)建一個(gè)單例的池
private static Map<Integer, A> pool = new HashMap<Integer, A>(); //池--集合: Map:key-value
//當(dāng)前對(duì)象的序號(hào)
private static int num=0;
//總數(shù)量
private static int MAX_SIZE=3;
public synchronized static A getInstance(){
//2根據(jù)num到池中去獲取obj
A obj = pool.get(num);
if(obj==null){
obj = new A();
pool.put(num, obj);
}
num = (num+1)%MAX_SIZE; //范圍: 0 ~ MAX_SIZE-1
//3如果該obj存在則返回,否則創(chuàng)建一個(gè)新的放入池中并返回
return obj;
}
}
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Java設(shè)計(jì)模式之裝飾者模式詳解和代碼實(shí)例
- Java設(shè)計(jì)模式之工廠模式(Factory模式)介紹
- Java設(shè)計(jì)模式之模板模式(Template模式)介紹
- Java設(shè)計(jì)模式之責(zé)任鏈模式(Chain of Responsibility模式)介紹
- Java設(shè)計(jì)模式之Iterator模式介紹
- Java設(shè)計(jì)模式之狀態(tài)模式(State模式)介紹
- java設(shè)計(jì)模式之建造者模式學(xué)習(xí)
- java設(shè)計(jì)模式之單例模式學(xué)習(xí)
- 對(duì)比Java設(shè)計(jì)模式編程中的狀態(tài)模式和策略模式
- Java多例設(shè)計(jì)模式實(shí)例詳解
相關(guān)文章
JAVA 根據(jù)設(shè)置的概率生成隨機(jī)數(shù)的方法
本篇文章主要介紹了JAVA 根據(jù)設(shè)置的概率生成隨機(jī)數(shù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文)
這篇文章主要介紹了在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
解決myBatis generator逆向生成沒(méi)有根據(jù)主鍵的select,update和delete問(wèn)題
這篇文章主要介紹了解決myBatis generator逆向生成沒(méi)有根據(jù)主鍵的select,update和delete問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用
這篇文章主要介紹了如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
springboot 接口返回字符串帶引號(hào)的問(wèn)題解決
本文主要介紹了springboot 接口返回字符串帶引號(hào)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

