有上限多例模式之静态变量保存
一、概述
多例模式(Multiton Pattern),这种设计模式也属于对象创建型模式,本质上就是单例模式的推广
定义:
一个类有多个实例且由类本身创建和管理自己的实例,并向外部提供访问点。
二、理解
关键点:
1)一个类可有多个实例
如果一个类仅有一个实例,就是单例模式(所以单例模式是多例模式的特例)
如果一个类有有限个实例,称为有上限多例(如枚举)
如果一个类的实例个数不确定,称为无上限多例
2)所有实例是由类自己创建
即所有实例外部不能创建(私有化构造器)
3)所有实例都是由类自己管理(什么时候创建,怎么创建,存放地点,什么时候销毁)
所以实例要保存在类的静态量中
4)要向外部提供访问点(静态变量/静态方法)
提供一个公开的静态方法访问即可
注:普通的类也可以有多个实例,但其实例一般是外部new创建和管理的,这种不是多例模式
三、实现
1、有上限的多例类
分几种情况
a)如果此类实例数量较小,可直接使用静态变量一个一个保存即可
如一副麻将牌中只有两个骰子,这可以创建一个骰子类,有两个实例
b)如果此类实例数量较多,这可以使用静态的聚集(如数组,集合等)来保存
如一副扑克牌有54张,这可以创建一个Card类,有54个实例
2、无上限的多例类
这里的无上限不是没有限,而是指无法确定实例的个数,如
一个颜色类,不同的实例表示不同的颜色,我们不确定外部会使用哪些颜色,外部一般也不可能使用全部颜色
所以没有必要提前创建所有的颜色实例,而是使用公开静态变量提供常用颜色访问,
公开静态方法提供所有颜色访问且提供缓冲功能(再次访问同一个颜色,则不新建)
公开笔记对他人可见,有机会被管理员评为“优质笔记”
{{ noteEditor.content.length }}/2000
讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。
课程大纲
![Java设计模式之单例模式视频课程](https://s2.51cto.com/images/202012/25/87f87de6891cf6dbdfd87e01d87fcb96.jpg?x-oss-process=image)
![Java实战之发送邮件视频教程](https://s2.51cto.com/images/201709/30/4c992d266a509e13f288c4ee5f226997.png?x-oss-process=image)
![Java设计模式之多例模式视频课程](https://s2.51cto.com/images/202012/25/540d6dcb13b7c652da2d584d72223312.jpg?x-oss-process=image)
![深入浅出之-JavaSE基础视频教程](https://s2.51cto.com/wyfs02/M01/24/9F/wKioL1NUhRKBKqhEAAJMRlAfLiQ763.jpg?x-oss-process=image)
![Spring4.0基础与提升视频教程(没有答疑服务)](https://s2.51cto.com/images/202012/30/c29c49a2cd3d19a1b694cba798c6eb49.jpg?x-oss-process=image)
![Struts2视频教程](https://s2.51cto.com/images/202012/30/5d9c0f4468ad0b6a704557684347798d.jpg?x-oss-process=image)
![全新版本Spring Boot 2.x全套视频教程 基础进阶实战 SpringBoot教程](https://s2.51cto.com/images/202007/24/948d7d1d68038f7c6f84fa7a6a798968.jpg?x-oss-process=image)
![师傅带徒弟学Java第1篇 Java基础视频课程](https://s2.51cto.com/images/202007/24/b8ad09ce1833955ee0b55d6128284a8a.jpg?x-oss-process=image)