设计模式-多例模式(Multiton Pattern)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

多例模式(Multiton Pattern) 实际上是单例模式的扩展。

多例模式(多例类)具有以下特点:

1、多例类可以有多个实例

2、多例类必须自己创建,管理自己的实例,并向外界提供自己的实例。

3、实例数目可以为有限个也可以没有上限。

代码如下:

   public class MutitonPattern
    {
        #region 属性


        /// <summary>
        /// 名称
        /// </summary>
        public string Name
        {
            get;
            set;
        }


        #endregion


        private static  int nMaxObjectNum = 3; // 对象数量


        private static ArrayList _ListObjects = new ArrayList(nMaxObjectNum);


        /// <summary>
        /// 私有构造函数
        /// </summary>
        private MutitonPattern()
        {
           
        }


        static MutitonPattern()
        {
            MutitonPattern pattern = null;
            for (int i = 0; i < nMaxObjectNum; i++)
            {
                pattern = new MutitonPattern("MutitonPattern" + i.ToString());
                _ListObjects.Add(pattern);
            }
        }


        private MutitonPattern(string name)
        {
            this.Name = name;
        }


        /// <summary>
        /// 获取随机的对象
        /// </summary>
        /// <returns></returns>
        public static MutitonPattern GetRandomInstance()
        {
            int nIndex = new Random().Next(nMaxObjectNum-1);
            return _ListObjects[nIndex] as MutitonPattern;
        }


        /// <summary>
        /// 根据索引获取目标对象
        /// </summary>
        /// <param name="nIndex"></param>
        /// <returns></returns>
        public static MutitonPattern GetTargetInstance(int nIndex)
        {
            return _ListObjects[nIndex] as MutitonPattern;
        }
    }

 class Program
    {
        static void Main(string[] args)
        {
            #region 多例模式


            MutitonPattern curMutitonPattern = MutitonPattern.GetRandomInstance();
            if (curMutitonPattern != null)
            {
                Console.WriteLine("当前对象名称是:" + curMutitonPattern.Name);
            }


            curMutitonPattern = MutitonPattern.GetTargetInstance(2);
            if (curMutitonPattern != null)
            {
                Console.WriteLine("当前对象名称是:" + curMutitonPattern.Name);
            }


            return;


            #endregion


        }
    }

多例模式Multiton Pattern):互联网应用配置管理实战案例分析 在一个高可用的互联网应用中,常常需要根据不同的配置组来创建多个具有特定配置的实例,例如数据库连接池、缓存实例等。这些实例的数量是已知的,并且在应用启动时就需要确定。 阅读详情

相关推荐

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

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

设计模式-10--多例模式(Multition pattern

多例模式(Multition pattern)是单例模式的一种扩展,它属于对象创建类型的设计模式。在多例模式中,一个类可以有多个实例,并且这些实例都是该类本身。因此,这样的类也被称为多例类。多例类可以有多个实例。这意味着你可以根据需求实例化指定数量的对象。多例类必须能够自我创建并管理自己的实例池。这意味着在查找对象时,如果找不到,则会创建一个新的对象。多例模式实际上就是限制了对象的数量,并且有可能对对象进行重复使用。

人生若只能如初见的博客 3166

Java与模式学习笔记 —— 多例(Multiton)模式

一、多例模式的特点 多例类可有多个实例 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例 二、有上限多例类 两个骰子Die为例: import java.util.Random; import java.util.Date; public class Die { private static Die die1 = new Die(); private static Die die2 = new Die(); private Die() {} public static Die g

通信侠的博客 406

设计模式-多例模式

参考:设计模式之禅 目录多例模式类图实现1. 皇帝2. 大臣运行结果补充 多例模式 这种情况有没有?有!大点声,有没有? 有!,是,确实有,就出现在明朝,那三国期间的算不算, 不算,各自称帝,各有各的地盘,国号不同。大家还记得那首诗《石灰吟》吗?作者是谁?于谦,他是被 谁杀死的?明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇帝,被俘虏后,他弟弟朱祁钰当 上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘记把老哥朱祁镇削为太上皇了,我 Shit,在中国的历 史上就这个时期是有 2 个皇帝,你说这期间的大臣

stoneWang_L的博客 875

多例模式

转载请注明出处!!!http://blog.csdn.net/zhonghuan1992          所有配套代码均在github上:https://github.com/ZHONGHuanGit/DesignPattern   跟着ZHONGHuan学习设计模式 多例模式 介绍:          所谓的多例模式,实际上就是单例模式(回顾看这里)的自然推广,作为对象的创建模式,

ZH de 部落格 1万+

设计模式多例模式

转载:http://blog.csdn.net/u012050154/article/details/51275964 一、概念 多例模式:相对单例模式而言的,单例模式仅有一个实例,所以多例模式顾名思义就是允许存在有限个实例(多例模式又分为有上限模式和无上限模式,无上限模式和直接new一个对象差不多,所以这里不讨论)。 二、特点 1、允许有多个实例; 2、多例类自己负责创...

wickedvalley 439

java设计模式(2/23)-多例模式Multiton Pattern

多例模式

好名字的博客 1731

java设计模式多例模式_多例模式总结_Java设计模式多例模式视频课程_Java视频-51CTO学院...

一、概述多例模式(Multiton Pattern),这种设计模式也属于对象创建型模式,本质上就是单例模式的推广定义:一个类有多个实例且由类本身创建和管理自己的实例,并向外部提供访问点。二、理解关键点:1)一个类可有多个实例如果一个类仅有一个实例,就是单例模式(所以单例模式是多例模式的特例)如果一个类有有限个实例,称为有上限多例(如枚举)如果一个类的实例个数不确定,称为无上限多例2)所有实例是由...

weixin_39724009的博客 154

多例模式【Multition Pattern】,什么是多例模式?应用场景?优缺点?多例模式实现?

目录什么是多例模式多例模式的特点?(1)可以有多个实例‌(2)自我创建和管理实例‌(3)重复使用实例‌多例模式的应用场景?多例模式的优缺点优点‌(1)限制实例数量‌(2)复用已有实例‌(3)灵活控制实例生命周期‌(1)难以扩展‌(2)难以测试‌(3)破坏封装性‌(4)代码复杂度高‌多例模式实现?1、定义两个皇帝2、大臣参拜‌‌多例模式Multiton Pattern)是单例模式的一种扩展,它允许一个类创建并管理多个实例,这些实例都是该类本身。

相互学习 共同进步 1227

设计模式——多例模式(23种之外)

多例模式Multiton Pattern)是一种特殊的设计模式,它属于创建型模式。与单例模式(Singleton Pattern)相比,多例模式允许一个类有多个实例,但是实例的数量是有限制的,并且这些实例在全局范围内是共享的。这种模式适用于当系统中有且仅有几个对象实例被频繁使用,且这些对象的创建和销毁开销较大时。在我的SpringBoot项目中遇到的一个问题,最后使用多例模式解决了。

Cheney的博客 950

[Design] Multiton Pattern

创建模式是对类的实例化过程的抽象化,分为类的创建模式和对象的创建模式。类的创建模式  使用继承关系把类的创建过程延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何创建和组合在一起的。对象的创建模式 把对象的创建过程动态的委派给另一个对象,从来动态的决定客户端将得到哪些具体类的实例,以及这些类是实例是如何创建和组合在一起的。-------------...

diangang3082的博客 106

Java之路:多例设计模式Multiton Pattern

单例设计模式是只能够存在一个实例化对象,而多例设计模式指的是一个类可以定义指定多个对象,但是不管是单例还是多例,构造方法都不可能使用public定义。 实际上对于多例设计能够体现在很多的方面,例如:现在要定义一个表示一周时间数的类,那么这个类只能够有七个对象。如果定义一个表示性别的类,那么这个类只能有两个对象。例如表示颜色基色的类只有三个对象,这些都属于多例设计模式。下面看一个多例设计的例子:...

星云999的博客 887

设计模式(四)——多例模式

设计模式(四)——多例模式   所谓多例(Multiton Pattern)实际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有以下的特点:1、多例类可以有多个实例2、多例类必须能够自我创建并管理自己的实例,并向外界提供自己的实例。 典型的例子就是数据库线程池,下面我就模拟一下用户取得线程池中连接的简化场景: 先设计这个产生连接的类 packag...

gong1208的专栏 235

多例模式实现线程的分组并发执行

[问题描述]希望所有相同名字的现成互斥执行,即分组并发,如下例:Thread threada1 = new thread(“1“);Thread threada2 = new thread(“1“);Thread threada3 = new thread(“1“);Thread threadb1 = new thread(“2“);Thread threadb2 =

1103

Java 多例设计模式:用类模拟枚举实现季节管理

多例设计实现枚举-1 class jj{ private final static jj c = new jj("春季"); private final static jj x = new jj("夏季"); private final static jj q = new jj("秋季"); private final static jj d = new jj("冬季"); privat...

liumingxiy的博客 286

C++单例模式深度解析:从线程安全到Meyers‘ Singleton实现

设计模式是软件工程中解决常见问题的经典方案,其中单例模式确保一个类仅有一个实例,并提供全局访问点。其核心原理在于控制实例化过程,通过私有构造函数和静态方法实现。这一模式的技术价值在于节省系统资源、保证数据一致性,并简化全局状态管理。在C++中实现线程安全的单例面临延迟初始化、指令重排等多重挑战,需结合互斥锁、原子操作或C++11的静态局部变量特性来解决。应用场景广泛覆盖日志系统、配置管理、数据库连接池等基础设施组件。本文聚焦C++单例模式的多种实现,特别是Meyers' Singleton这一现代C++中的

weixin_30564785的博客 317
上一篇: 软件生命周期模型
下一篇: 设计模式-工厂方法模式(Factory Method Pattern)
小light
博客等级 码龄16年 4粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值