- 相關(guān)推薦
java設計模式:多例模式
導語(yǔ):Java是一門(mén)面向對象編程語(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強大和簡(jiǎn)單易用兩個(gè)特征。下面我們來(lái)看看多例模式,希望對大家有所幫助。
多例設計模式:?jiǎn)卫?緩存
★ 緩存在單例中的使用
緩存在編程中使用很頻繁,有著(zhù)非常重要的作用,它能夠幫助程序實(shí)現以空間換取時(shí)間,通常被設計成整個(gè)應用程序所共享的一個(gè)空間,
現要求實(shí)現一個(gè)用緩存存放單例對象的類(lèi)。
說(shuō)明:該緩存中可以存放多個(gè)該類(lèi)對象,每個(gè)對象以一個(gè)key值標識,key值相同時(shí)所訪(fǎng)問(wèn)的是同一個(gè)單例對象。
類(lèi)對象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package cn.hncu.pattern.multi; public class A { private int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } } |
實(shí)現方式1:key值由用戶(hù)指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package cn.hncu.pattern.multi; import java.util.HashMap; import java.util.Map; //該版本的key由用戶(hù)來(lái)指定(如servlet緩存中的url,由用戶(hù)在請求時(shí)發(fā)送過(guò)來(lái))。池中的對象個(gè)數沒(méi)控制 public class MyBuffer { //1創(chuàng )建一個(gè)存放多個(gè)對象的容器----單例 private static Map<string, a=""> map = new HashMap<string, a="">(); //2給外面提供一個(gè)從容器獲取對象的方法 public static A getInstance(String key){ //3先到容器中拿 A a = map.get(key); //4如果沒(méi)拿到,則創(chuàng )建一個(gè)新的放入容器中,并返回該新創(chuàng )建的對象。 // 如果拿到,則直接返回 if(a==null){ a = new A(); map.put(key, a); } return a; } } </string,></string,> |
實(shí)現方式2:key值由代碼內部自己決定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package cn.hncu.pattern.multi; import java.util.HashMap; import java.util.Map; //該版本的key由當前緩存類(lèi)來(lái)維護。能夠控制緩存中對象的個(gè)數 public class MyBuffer2 { //定義一個(gè)單例的池 private static Map<integer, a=""> map = new HashMap<integer, a="">(); private static int num=1; private static final int MAX=5; public static A getInstance(){ A a = map.get(num); if(a==null){ a = new A(); map.put(num, a); } num++; if(num>MAX){ //采用某些算法來(lái)處理。我們這里簡(jiǎn)單處理:強行把最早放出去的那個(gè)給新用戶(hù) num=1; } return a; } } </integer,></integer,> |
【java設計模式:多例模式】相關(guān)文章:
java設計模式:裝飾模式07-08
java設計模式:工廠(chǎng)模式05-27
java設計模式:DAO模式03-13
JAVA設計模式之單例模式07-29
Java單例設計模式04-25
Java的設計模式編程中責任鏈模式的運用的實(shí)例講解07-07
Java的結構型模式07-09