`
cakin24
  • 浏览: 1330335 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

多例设计模式

阅读更多

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

 

二多例模式静态类图


 

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

  • 大小: 46.2 KB
0
1
分享到:
评论

相关推荐

    Java设计模式——多例模式实验

    编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。...

    Java多例设计模式实例详解

    主要介绍了Java多例设计模式,结合实例形式分析了基于Java的多例模式概念、原理、定义与使用方法,需要的朋友可以参考下

    Java+单例+多例+工厂+枚举+动态代理===》演示

    **说白了,多例设计模式就是保证使用该模式的类会有固定数量的该类对象产生** #### 实现步骤 ​ 1.创建一个类, 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 ​ 2.在该类内部产生固定数量的...

    php设计模式之单例、多例设计模式的应用分析

    本篇文章是对php设计模式中的单例与多例设计模式的应用进行了详细的分析介绍,需要的朋友参考下

    常用设计模式学习脑图

    常用设计模式脑图,脑图中根据每个设计模式进行了详细的备注解释!我们的最强大脑在哪里?在这里!(单例模式、原型模式、工厂模式、代理模式、策略模式、适配器模式、委派模式、装饰器模式、观察者模式)

    java设计模式之多类java-设计模式之:多例(Multiton)模式

    java-设计模式之:多例(Multiton)模式

    软件设计模式与体系结构(讲解+代码)

    上篇:软件设计模式例子代码  【例2.2】简单工厂方法模式-汽车保险  【例2.3】工厂方法模式-汽车保险  【例2.4】抽象工厂模式-房屋信息  【例2.5】生成器模式-房屋信息  【例2.6】单例模式-互联网连接  ...

    韩顺平_java设计模式笔记

    23中java设计模式结合生活中用例进行讲解以及spring源码中存在的设计模式才知道原来设计模式如此重要,视频教程链接如下:https://study.163.com/course/courseMain.htm?courseId=1209569921,或者直接在网易云搜索...

    JAVA设计模式-设计模式公司出品

    java设计模式,设计模式公司出品。策略模式,代理模式,单例模式,多例模式,工厂模式,门面模式等。

    软件设计模式大作业

    java设计模式期末大作业,运用了6种模式,包括简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式、观察者模式,文档包括系统流程,系统类图,各个模式的子类图,源代码,实验截图。绝对完整.

    Head First设计模式.pdf

    全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出...

    23种经典设计模式(疯狂Java联盟版)

    本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例 子和类图,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点。 ...

    软件设计模式

    包含三大类型的设计模式:1、创造型设计模式,2、行为型设计模式,3、结构型设计模式。总共详细介绍25个设计模式,本文档为PPT教材,可供学生和教师使用。欢迎下载。

    设计模式JAVA(学习java模式的一本好书)

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多 人更容易理解GoF 的《设计模式》。由于原著都是以C++为例, 以Java 为例的设计模式 基本又都以图形应用为例,而我们更关心Java 在中间件...

    设计模式单例模式

    设计模式之单例模式 懒汉式,饿汉式,同步枷锁

    设计模式 带目录标签

    这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下...

    设计模式(目录整理版)

    这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下...

    c++23种设计模式

    经典的设计模式书籍,各种常用模式。书中代码以c++为例。

    Java23种设计模式(总结)

    本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模*的组成部分,并附带有简单的例 子和类*,目的是为了让读*了解二十三种*计模式,并能方便的查阅各种设计模*的用法及注意点。 所...

Global site tag (gtag.js) - Google Analytics