- 相關推薦
java設計模式:多例模式
導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。下面我們來看看多例模式,希望對大家有所幫助。
多例設計模式:單例+緩存
★ 緩存在單例中的使用
緩存在編程中使用很頻繁,有著非常重要的作用,它能夠幫助程序實現以空間換取時間,通常被設計成整個應用程序所共享的一個空間,
現要求實現一個用緩存存放單例對象的類。
說明:該緩存中可以存放多個該類對象,每個對象以一個key值標識,key值相同時所訪問的是同一個單例對象。
類對象
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; } } |
實現方式1: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 | package cn.hncu.pattern.multi; import java.util.HashMap; import java.util.Map; //該版本的key由用戶來指定(如servlet緩存中的url,由用戶在請求時發送過來)。池中的對象個數沒控制 public class MyBuffer { //1創建一個存放多個對象的容器----單例 private static Map<string, a= "" > map = new HashMap<string, a= "" >(); //2給外面提供一個從容器獲取對象的方法 public static A getInstance(String key){ //3先到容器中拿 A a = map.get(key); //4如果沒拿到,則創建一個新的放入容器中,并返回該新創建的對象。 // 如果拿到,則直接返回 if (a== null ){ a = new A(); map.put(key, a); } return a; } } </string,></string,> |
實現方式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由當前緩存類來維護。能夠控制緩存中對象的個數 public class MyBuffer2 { //定義一個單例的池 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){ //采用某些算法來處理。我們這里簡單處理:強行把最早放出去的那個給新用戶 num= 1 ; } return a; } } </integer,></integer,> |
【java設計模式:多例模式】相關文章:
JAVA設計模式之單例模式07-29
Java的設計模式編程中責任鏈模式的運用的實例講解07-07
教學設計模式的類型09-13
該怎么使用Java設計模式編程中的OCP開閉原則?06-29
Java開發策略模式的簡單應用實現方法09-25
淺談教學設計的模式范文09-24