`

多例模式

阅读更多
多例模式
个人理解:
该类可以有多个实例,但是每个实例有不同的属性。
getInstance方法获取到的实例对象中会保证属性值相同的实例只有一个。

import java.util.ArrayList;
import java.util.Random;

/**
 * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you
 * 多例模式
 */
@SuppressWarnings("all")
public class Emperor {
	
	private static int maxNumOfEmperor = 2; // 最多只能有连个皇帝
	private static int countNumOfEmperor = 0; // 正在被人尊称的是那个皇帝
	private static ArrayList emperorInfoList = new ArrayList(maxNumOfEmperor); // 皇帝叫什么名字
	private static ArrayList emperorList = new ArrayList(maxNumOfEmperor); // 装皇帝的列表;

	// 先把2个皇帝产生出来
	static {
		// 把所有的皇帝都产生出来
		for (int i = 0; i < maxNumOfEmperor; i++) {
			emperorList.add(new Emperor("皇" + (i + 1) + "帝"));
		}
	}

	// 就这么多皇帝了,不允许再推举一个皇帝(new 一个皇帝)
	private Emperor() {
		// 世俗和道德约束你,目的就是不让你产生第二个皇帝
	}

	private Emperor(String info) {
		emperorInfoList.add(info);
	}

	public static Emperor getInstance() {
		Random random = new Random();
		countNumOfEmperor = random.nextInt(maxNumOfEmperor); // 随机拉出一个皇帝,只要是个精神领袖就成
		return (Emperor) emperorList.get(countNumOfEmperor);
	}
	
	public static Emperor getInstance(int param) {
		countNumOfEmperor = param;
		return (Emperor) emperorList.get(param);
	}
	
	// 皇帝叫什么名字呀
	public static void emperorInfo() {
		System.out.println(emperorInfoList.get(countNumOfEmperor));
	}
}

代码引自《我们的设计模式》(存在与附件)
分享到:
评论

相关推荐

    C#描述中的单例与多例模式

    - **多例模式**:根据不同的条件创建多个唯一实例,适用于需要根据不同条件创建多个不同实例的情况。 这两种模式都有助于管理和控制类的实例化过程,提高代码的可维护性和灵活性。在实际开发过程中,选择合适的模式...

    多例模式学习笔记

    **多例模式学习笔记** 在软件设计模式中,多例模式(Multiton)是一种扩展了单例模式的设计模式。单例模式确保一个类只有一个实例,而多例模式则允许一个类有多个实例,但通常数量是有限的。这种模式常用于资源管理...

    单例模式和多例模式

    单例模式和多例模式是软件设计模式中的两种重要类型,它们主要用来控制类的实例化过程,确保在系统中某一类只有一个实例或者多个实例。 单例模式是一种限制类的实例化过程,使得一个类在整个应用程序中只能有一个...

    单例多例模式

    "单例多例模式" 单例多例模式是软件设计中的一种重要概念,它们之间的区别和选择对系统的性能和稳定性有着重要的影响。本文将详细讲解单例多例模式的定义、产生方式、使用场景和选择标准。 一、什么是单例多例? ...

    【Java设计模式】多例模式

    Java中的多例模式确保一个类只有唯一命名的实例,并提供对它们的全局访问点。每个命名实例都通过一个唯一的键进行访问,使其成为Java设计模式的重要组成部分。 ## 二、详细解释及实际示例 1. **实际示例**: - 多...

    java设计模式:多例模式.pdf

    多例模式是设计模式中的一种,它在Java中是一种扩展了单例模式的概念。单例模式确保一个类只有一个实例,并提供了全局访问点。而多例模式则允许一个类有多个实例,但同样提供了全局访问点,并且这些实例可以通过特定...

    多例模式java实现

    单例模式的扩展及应用。 编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时...

    java设计模式:多例模式.docx

    多例模式是设计模式中的一种,它在Java中主要用于创建多个实例,但这些实例的数量是有限制的,与单例模式不同的是,多例模式允许存在多个实例,但通常会限制实例的数量。在某些场景下,多例模式比单例模式更合适,...

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

    java设计模式之多例(Multiton)模式是对象的创建模式之一,多例模式中的多例类可以有多个实例,且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。多例模式的特点是:多例类可以有多个实例,多例类必须...

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

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

    PHP多例模式介绍

    学习java就知道设计模式中有多例模式: 1、多例类可以有多个实例2、多例类必须能够自我创建并管理自己的实例,并向外界提供自己的实例。 大家都知道PHP单例模式,却很少说PHP多例模式,下面是在wikipedia上看到的PHP...

    java多例模式下处理Sftp文件上传下载

    java多例模式下处理Sftp文件上传下载,采用固定密码访问Sftp服务器。

    【更新】phpMyBatis安全框架[dMapper],phpMVC框架,支持数据库单例模式和多例模式

    支持数据库单例模式和多例模式,sql文件写在xml中阅读性和维护性都很好,只需要将sql的xml文件交给DBA,DBA即可很轻松的维护,完全脱离了在php文件中写sql语句,数据库类采用了PDO技术,sql参数采用绑定的方式,有效...

    phpMyBatis安全框架[dMapper],phpMVC框架,支持数据库单例模式和多例模式【更新】

    支持数据库单例模式和多例模式,sql文件写在xml中阅读性和维护性都很好,只需要将sql的xml文件交给DBA,DBA即可很轻松的维护,完全脱离了在php文件中写sql语句,数据库类采用了PDO技术,sql参数采用绑定的方式,有效...

    Java单例模式和多例模式实例分析

    Java单例模式和多例模式实例分析 单例模式是指这种设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式的定义是:单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个...

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

    多例模式是单例模式的一个扩展,它允许根据特定的标识(key)创建多个实例,而不是仅限于一个。这在某些场景下很有用,比如管理具有唯一标识的不同对象。Multiton模式可以有效地管理多个单例,使得它们之间的冲突...

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

    通过多例模式可以保证系统中,应用该模式设计的类有**固定数量**的对象产生。 **说白了,多例设计模式就是保证使用该模式的类会有固定数量的该类对象产生** #### 实现步骤 ​ 1.创建一个类, 将构造方法私有化,使其...

    您的设计模式.pdf。

    本书《您的设计模式》对设计模式进行了详细的讲解,涵盖了策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式、门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式、装饰模式、...

Global site tag (gtag.js) - Google Analytics