<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            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

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院