<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. java語言

    java設計模式:多例模式

    時間:2025-01-30 06:14:06 java語言 我要投稿
    • 相關推薦

    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-08

    java設計模式:工廠模式05-27

    java設計模式:DAO模式03-13

    JAVA設計模式之單例模式07-29

    Java單例設計模式04-25

    解析Java的設計模式編程之解釋器模式的運用05-19

    Java的設計模式編程中責任鏈模式的運用的實例講解07-07

    Java的結構型模式07-09

    簡單講解Java的Future編程模式方案03-24

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人