一、概述

多例模式(Multiton  Pattern),这种设计模式也属于对象创建型模式,本质上就是单例模式的推广

定义:

一个类有多个实例且由类本身创建和管理自己的实例,并向外部提供访问点。

二、理解

关键点:

1)一个类可有多个实例

如果一个类仅有一个实例,就是单例模式(所以单例模式是多例模式的特例)

如果一个类有有限个实例,称为有上限多例(如枚举)

如果一个类的实例个数不确定,称为无上限多例

2)所有实例是由类自己创建

即所有实例外部不能创建(私有化构造器)

3)所有实例都是由类自己管理(什么时候创建,怎么创建,存放地点,什么时候销毁)

所以实例要保存在类的静态量中

4)要向外部提供访问点(静态变量/静态方法)

提供一个公开的静态方法访问即可

注:普通的类也可以有多个实例,但其实例一般是外部new创建和管理的,这种不是多例模式

三、实现

1、有上限的多例类

分几种情况

a)如果此类实例数量较小,可直接使用静态变量一个一个保存即可

如一副麻将牌中只有两个骰子,这可以创建一个骰子类,有两个实例

b)如果此类实例数量较多,这可以使用静态的聚集(如数组,集合等)来保存

如一副扑克牌有54张,这可以创建一个Card类,有54个实例

2、无上限的多例类

这里的无上限不是无限,而是指无法确定实例的个数,如

一个颜色类,不同的实例表示不同的颜色,我们不确定外部会使用哪些颜色,外部一般也不可能使用全部颜色

所以没有必要提前创建所有的颜色实例,而是使用公开静态变量提供常用颜色访问,

公开静态方法提供所有颜色访问且提供缓冲功能(再次访问同一个颜色,则不新建)

四、总结

多例模式的重点是实例是由类自己创建和管理,这是区分多例模式的最重要的一点

javase的API中使用到多例模式的有

java.util.ResourceBundle

java.util.Local

java.text.NumberFormat

java.awt.Color

....

java设计模式在线视频_Java设计模式之单例模式视频课程相关推荐

  1. java opencv 读取视频_java使用OpenCV从视频文件中获取帧

    本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...

  2. java connection 单例_Java设计模式之单例模式详解

    Java设计模式之单例模式详解 什么是设计模式 设计模式是在大量的实践中总结和理论之后优选的代码结构,编程风格,以及解决问题的思考方式.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可 ...

  3. java设计模式 单例_java设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  4. Java行业情景分析_Java 设计模式情景分析——单例模式

    单例模式可以说是应用最广的模式之一,在应用单例模式时,单例对象的类必须保证只有一个实例存在,而且可以自行实例化并向整个系统提供这个实例.一般在不能自由构造对象的情况下,就会使用单例设计模式,例如创建一 ...

  5. java设计模式 单例_java设计模式一(单例模式singleton)

    1 概述 如果要保证系统里一个类最多只能存在一个实例时,我们就需要单例模式.这种情况在我们应用中经常碰到,例如缓存池.数据库连接池.线程池.一些应用服务实例等.在多线程环境中为了保证实例的唯一性其实并 ...

  6. java+单例+恶汉_Java设计模式之单例模式(恶汉式和懒汉式)

    /** 单例模式:* 饿汉式:类一加载就创建对象* 懒汉式:用的时候,才去创建对象* 面试题:单例模式的思想是什么?写一个代码体现(我们最好写懒汉式的单例模式给面 /* * 单例模式: *       ...

  7. java中装饰器_Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  8. java常用代码解析_Java设计模式常用原则代码解析

    本篇文章小编给大家分享一下Java设计模式常用原则代码解析,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.单一职责原则每一个类负责一个职责(一个类只有 ...

  9. java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解

    Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...

最新文章

  1. Introduction to PostGIS 之线性参考、地理编码
  2. 在CentOS下安装WebBench进行web 性能测试
  3. Python中self的用法
  4. CygWin / 安装软件包的方法
  5. 我的世界java和pe版_《我的世界》pe版不一样的方块世界
  6. SPCS 2021 开启征稿 | 第二届信号处理与计算机科学国际学术会议
  7. 详解get与post请求方式、content-type与responseType、@Requestbody与@Requestparam的使用场景
  8. jmeter修改redis_jmeter如何访问redis服务缓存
  9. fedora 9 中英文相互兼容设置
  10. MobaXterm快捷输入
  11. 什么是着色器 (Shader)占用率(Occupancy)? 为什么我们应该关心它?
  12. 机器学习160问(建议收藏)
  13. linux 用7zip解压rar,Linux7-rar文件的压缩及解压方法
  14. 以YOLOv5为基准实现布匹缺陷检测(Fabric Defect Detection)
  15. Latex的中文模板分享~~~
  16. OIS利率查询_图表加数据OIS隔夜基准利率掉期
  17. 【CNC——第9.1篇】使用Setup引导程序整定步进电机(开环步进电机整定方式之1)
  18. Android万能遥控器
  19. 模拟一个类似LinkedList的集合
  20. 德国冯哈勃 Faulhaber2342L012空心杯减速电机带编码器

热门文章

  1. dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
  2. 蜘蛛日志分析工具_如何分析蜘蛛日志?
  3. Android外存的读写
  4. MySQL影响性能的因素
  5. 使用Jquery EasyUi常见问题解决方案
  6. LeetCode(268)——缺失数字(JavaScript)
  7. LeetCode(693)——交替位二进制数(JavaScript)
  8. npm ERR! code ENOENT npm ERR! syscall open npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file
  9. Intellij IDLE 中javafx使用与配置
  10. 为什么家里电信宽带不能用路由器了?要怎么解决?