多例設計模式

一 多例設計模式定義
多例設計模式就是存在多個對象實例,供外部應用裯用,比喻數據庫連接池。

 

二多例模式靜態類圖


 

三多例模式代碼實現
1多例模式核心類

Java代碼  下載

  1. package com.demo.multipleton;  

  2.   

  3. import java.util.ArrayList;  

  4.   

  5. /** 

  6.  * 多例模式 

  7.  *  

  8.  * @author 

  9.  *  

  10.  */  

  11. public class Multipleton {  

  12.   

  13.     // 多例數量  

  14.     private static final int N = 10;  

  15.   

  16.     // 存放N個實例對象的容器  

  17.     private static ArrayList<Multipleton> list = new ArrayList<Multipleton>(N);  

  18.   

  19.     // 每個對象的序號 標識  

  20.     private int no;  

  21.   

  22.     // 私有構造方法 防止外界應用程序實例化  

  23.     private Multipleton(int no) {  

  24.         this.no = no;  

  25.         System.out.println("-- Create Multipleton Object[" + no + "]!");  

  26.     }  

  27.   

  28.     // 實例化N個對象實例  

  29.     static {  

  30.         // 添加Multipleton對象實例  

  31.         for (int i = 0; i < N; i++) {  

  32.             list.add(new Multipleton(i));  

  33.         }  

  34.     }  

  35.   

  36.     /** 

  37.      * 隨機獲得 實例對象 

  38.      */  

  39.     public static Multipleton getRandomInstance() {  

  40.         // 獲得隨機數字  

  41.         int num = (int) (Math.random() * N);  

  42.         // 獲得list中的對象實例  

  43.         return list.get(num);  

  44.     }  

  45.   

  46.     public int getNo() {  

  47.         return no;  

  48.     }  

  49.   

  50.     public void setNo(int no) {  

  51.         this.no = no;  

  52.     }  

  53. }  

 2多例模式客戶端

Java代碼  下載

  1. package com.demo;  

  2.   

  3. import com.demo.multipleton.Multipleton;  

  4.   

  5. /** 

  6.  * 客戶端應用程序 

  7.  *  

  8.  * @author 

  9.  *  

  10.  */  

  11. public class MultipletonClient {  

  12.   

  13.     /** 

  14.      * @param args 

  15.      */  

  16.     public static void main(String[] args) {  

  17.         // 獲得Multipleton對象實例  

  18.         Multipleton multipleton = Multipleton.getRandomInstance();  

  19.         System.out.println("multipleton:" + multipleton.getNo());  

  20.         // 在次獲得Multipleton對象實例  

  21.         Multipleton multipleton2 = Multipleton.getRandomInstance();  

  22.         System.out.println("multipleton2:" + multipleton2.getNo());  

  23.         // 比較兩個對象是否是同一個對象實例  

  24.         if (multipleton == multipleton2) {  

  25.             System.out.println("--這是同一個對象!");  

  26.         } else {  

  27.             System.out.println("--這是不同的對象!");  

  28.         }  

  29.     }  

  30. }  

 3運行結果
-- Create Multipleton Object[0]!
-- Create Multipleton Object[1]!
-- Create Multipleton Object[2]!
-- Create Multipleton Object[3]!
-- Create Multipleton Object[4]!
-- Create Multipleton Object[5]!
-- Create Multipleton Object[6]!
-- Create Multipleton Object[7]!
-- Create Multipleton Object[8]!
-- Create Multipleton Object[9]!
multipleton:2
multipleton2:2
--這是同一個對象!
4 從上面程序運行結果,可以得出兩個結論
4.1 實例化N個實例對象的過程只執行一次。
4.2 隨機獲得Multipleton對象。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章