欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

java語言

java設(shè)計(jì)模式:多例模式

時(shí)間:2025-01-30 06:14:06 java語言 我要投稿
  • 相關(guān)推薦

java設(shè)計(jì)模式:多例模式

  導(dǎo)語:Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。下面我們來看看多例模式,希望對(duì)大家有所幫助。

  多例設(shè)計(jì)模式:?jiǎn)卫?緩存

  ★ 緩存在單例中的使用

  緩存在編程中使用很頻繁,有著非常重要的作用,它能夠幫助程序?qū)崿F(xiàn)以空間換取時(shí)間,通常被設(shè)計(jì)成整個(gè)應(yīng)用程序所共享的一個(gè)空間,

  現(xiàn)要求實(shí)現(xiàn)一個(gè)用緩存存放單例對(duì)象的類。

  說明:該緩存中可以存放多個(gè)該類對(duì)象,每個(gè)對(duì)象以一個(gè)key值標(biāo)識(shí),key值相同時(shí)所訪問的是同一個(gè)單例對(duì)象。

  類對(duì)象

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í)現(xiàn)方式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,由用戶在請(qǐng)求時(shí)發(fā)送過來)。池中的對(duì)象個(gè)數(shù)沒控制          
public class MyBuffer {          
   //1創(chuàng)建一個(gè)存放多個(gè)對(duì)象的容器----單例          
   private static Map<string, a=""> map = new HashMap<string, a="">();          
             
   //2給外面提供一個(gè)從容器獲取對(duì)象的方法          
   public static A getInstance(String key){          
                 
       //3先到容器中拿          
       A a = map.get(key);          
                 
       //4如果沒拿到,則創(chuàng)建一個(gè)新的放入容器中,并返回該新創(chuàng)建的對(duì)象。          
       // 如果拿到,則直接返回          
       if(a==null){          
           a = new A();          
           map.put(key, a);          
       }          
                 
       return a;          
   }          
             
}          
</string,></string,>          

  實(shí)現(xiàn)方式2:key值由代碼內(nèi)部自己決定

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由當(dāng)前緩存類來維護(hù)。能夠控制緩存中對(duì)象的個(gè)數(shù)          
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){          
           //采用某些算法來處理。我們這里簡(jiǎn)單處理:強(qiáng)行把最早放出去的那個(gè)給新用戶          
           num=1;          
       }          
       return a;          
   }          
             
}          
</integer,></integer,>          

【java設(shè)計(jì)模式:多例模式】相關(guān)文章:

java設(shè)計(jì)模式:裝飾模式07-08

java設(shè)計(jì)模式:工廠模式05-27

java設(shè)計(jì)模式:DAO模式03-13

JAVA設(shè)計(jì)模式之單例模式07-29

Java單例設(shè)計(jì)模式04-25

解析Java的設(shè)計(jì)模式編程之解釋器模式的運(yùn)用05-19

Java的設(shè)計(jì)模式編程中責(zé)任鏈模式的運(yùn)用的實(shí)例講解07-07

Java的結(jié)構(gòu)型模式07-09

簡(jiǎn)單講解Java的Future編程模式方案03-24