多例设计模式

一 多例设计模式定义
多例设计模式就是存在多个对象实例,供外部应用裯用,比喻数据库连接池。

 

二多例模式静态类图


 

三多例模式代码实现
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对象。


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