zoukankan      html  css  js  c++  java
  • 多例设计模式

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

    二多例模式静态类图


     

    三多例模式代码实现
    1多例模式核心类

    package com.demo.multipleton;
    
    import java.util.ArrayList;
    
    /**
     * 多例模式
     * 
     * @author
     * 
     */
    public class Multipleton {
    
    	// 多例数量
    	private static final int N = 10;
    
    	// 存放N个实例对象的容器
    	private static ArrayList<Multipleton> list = new ArrayList<Multipleton>(N);
    
    	// 每个对象的序号 标识
    	private int no;
    
    	// 私有构造方法 防止外界应用程序实例化
    	private Multipleton(int no) {
    		this.no = no;
    		System.out.println("-- Create Multipleton Object[" + no + "]!");
    	}
    
    	// 实例化N个对象实例
    	static {
    		// 添加Multipleton对象实例
    		for (int i = 0; i < N; i++) {
    			list.add(new Multipleton(i));
    		}
    	}
    
    	/**
    	 * 随机获得 实例对象
    	 */
    	public static Multipleton getRandomInstance() {
    		// 获得随机数字
    		int num = (int) (Math.random() * N);
    		// 获得list中的对象实例
    		return list.get(num);
    	}
    
    	public int getNo() {
    		return no;
    	}
    
    	public void setNo(int no) {
    		this.no = no;
    	}
    }

     2多例模式客户端

    package com.demo;
    
    import com.demo.multipleton.Multipleton;
    
    /**
     * 客户端应用程序
     * 
     * @author
     * 
     */
    public class MultipletonClient {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// 获得Multipleton对象实例
    		Multipleton multipleton = Multipleton.getRandomInstance();
    		System.out.println("multipleton:" + multipleton.getNo());
    		// 在次获得Multipleton对象实例
    		Multipleton multipleton2 = Multipleton.getRandomInstance();
    		System.out.println("multipleton2:" + multipleton2.getNo());
    		// 比较两个对象是否是同一个对象实例
    		if (multipleton == multipleton2) {
    			System.out.println("--这是同一个对象!");
    		} else {
    			System.out.println("--这是不同的对象!");
    		}
    	}
    }

     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对象。

  • 相关阅读:
    ASP.NET备份还原数据库
    ASP.NET的运行原理与运行机制
    Asp.net WebPages框架运行原理浅析(转)
    不要盲目选择定时器
    C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作
    使用System.Timers.Timer类实现程序定时执行
    C#启动一个外部程序(1)-WinExec
    几种类型的db,以及最新的db排名,看一下
    SharePoint 2013 讨论板列表"Connect to Outlook" 不可用解决方案
    Java可视化编程,基于布局管理器的UI设计
  • 原文地址:https://www.cnblogs.com/ainima/p/6331656.html
Copyright © 2011-2022 走看看