多例模式总结

361 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
java初学者,java工程师
你将会学到
了解多例设计模式学习多例模式
课程简介


一、概述

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

定义:

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

二、理解

关键点:

      1)一个类可有多个实例

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

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

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

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

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

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

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

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

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

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

三、实现

1、有上限的多例类

      分几种情况

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

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

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

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

            

2、无上限的多例类

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

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

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

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




展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交