详略。。设计模式2——单例变形(多例).。。。studying
★ 缓存在单例中的使用(“单例+缓存”技术)
缓存在编程中使用非常频繁,有着非常关键的数据,它可以帮助程序实现以空间换取时间,
通常被设计成整个应用程序所共享的一个空间,现要求实现一个用缓存存放单例对象的类。
说明:该缓存中能够存放多个该类对象,每一个对象以一个key值标识。key值同样时所訪问的是同一个单例对象。
★ 单例变形——多例模式(“单例+缓存+控制实例个数”技术)
把上面缓存的单例实现,做成一个可以控制对象个数的共享空间,供整个应用程序使用。
在缓存中维护指定个数的对象,每一个对象的key值由该类内部指定,有外部请求时直接返回当中一个对象出去。
说明:相当于维护一个指定数量的对象池。当请求个数超过控制的总数时,開始循环反复使用 。
java代码实现:
package cn.hncu.patterns.exercise.mutiple;
import java.util.HashMap;
public class Mutiple {
/*
* hm哈希集合,本例用作缓存
* number指定实例个数为3
* count游标
*/
private static HashMap<Integer, Mutiple> hm = new HashMap<Integer, Mutiple>();
private static final int NUMBER = 3;
private static int count = 0;
private Mutiple() {
}
/*
* 在缓存中维护指定个数的对象,
* 每一个对象的key值由该类内部指定,
* 有外部请求时直接返回当中一个对象出去。
*/
public static Mutiple getInstance() {
Mutiple m = hm.get(count);
if (m == null) {
m = new Mutiple();
hm.put(count, m);
}
count++;
if (count >= NUMBER) {
count = 0;
}
return m;
}
/*
* 測试代码
*/
public static void main(String[] args) {
System.out.println(Mutiple.getInstance());
System.out.println(Mutiple.getInstance());
System.out.println(Mutiple.getInstance());
System.out.println(Mutiple.getInstance());
System.out.println(Mutiple.getInstance());
}
}
測试结果
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
详略。。设计模式2——单例变形(多例).。。。studying的更多相关文章
- Java---设计模块(单例的变形)(多例)
设计模式1--单例变形(多例) ★ 缓存在单例中的使用 缓存在编程中使用很频繁,有着非常重要的作用,它能够帮助程序实现以空间换取时间,通常被设计成整个应用程序所共享的一个空间,现要求实现一个用缓存存放 ...
- 详略。。设计模式1——单例。。。。studying
设计模式1--单例 解决:保证了一个类在内存中仅仅能有一个对象. 怎么做才干保证这个对象是唯一的呢? 思路: 1.假设其它程序可以任意用new创建该类对象,那么就无法控制个数.因此,不让其它程序用ne ...
- iOS 设计模式之单例
设计模式:单例 一. 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并 ...
- 设计模式——懒汉式单例类PK饿汉式单例类
前言 我们都知道生活中好多小软件,有的支持多IP在线,有的仅仅局限于单个IP在线.为什么这样设计,在软件开发阶段就是,有需求就是发展.这就是软件开发的一个设计模式--懒汉式单例类和饿汉式单例类. 内容 ...
- 游戏设计模式——C++单例类
前言: 本文将探讨单例类设计模式,单例类的懒汉模式/饿汉模式,单例类的多线程安全性,最后将利用C++模板减少单例类代码量. 本文假设有一个Manager管理类,并以此为探究单例类的设计模式. 懒汉模式 ...
- java软件设计模式只单例设计模式
概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...
- GOF提出的23种设计模式是哪些 设计模式有创建形、行为形、结构形三种类别 常用的Javascript中常用设计模式的其中17种 详解设计模式六大原则
20151218mark 延伸扩展: -设计模式在很多语言PHP.JAVA.C#.C++.JS等都有各自的使用,但原理是相同的,比如JS常用的Javascript设计模式 -详解设计模式六大原则 设计 ...
- 8.2 GOF设计模式一: 单实例模式 SingleTon
GOF设计模式一: 单实例模式 SingleTon 整个美国,只有一个“现任美国总统” 比如,在学校,“老师”,有数百个:“校长”,只有一个 系统运行时,如何保证某个类只允许实例化一个对象 ...
- Java单例和多例
背景:最近在学习韩老师的笔记时候发现不是很了解单例和多例,于是通过网上查找资料的方式去学习. 设计模式:最佳的实践,是软件开发人员在软件开发过程中面临一般解决方案,也就是开发的经验总结. 单例模式(S ...
随机推荐
- 应用LR监控Apache性能
1)对Apache服务器中的http.conf进行如下配置修改Apache中Httpd.conf文件,添加如下代码(该文件中都有,只要取消注释就好了)<Location /server-stat ...
- javascript Array(数组)
迁移时间:2017年5月25日08:05:33 UpdateTime--2017年3月31日16:29:08 一.数组(Array) (一)用法 //js声明数组的两大类方式 // 第一类(通常使 ...
- 分析USB平台设备模型框架(1)
start_kernel rest_init(); kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); do_basic_setup ...
- GDI+学习笔记(九)带插件的排序算法演示器(MFC中的GDI+实例)
带插件的排序算法演示器 请尊重本人的工作成果,转载请留言.并说明转载地址,谢谢. 地址例如以下: http://blog.csdn.net/fukainankai/article/details/27 ...
- Mysql报错......\xE6\x80\xBB\xE7\x9B\x91' for column...
Mysql添加表中字符报错:Incorrect string value: '\xE6\x80\xBB\xE7\x9B\x91' for column 'postName' at row 1 原因:字 ...
- java基础讲解13-----集合
一:集合介绍 import java.util.ArrayList;import java.util.Collection;import java.util.Iterator; public clas ...
- 让python cookie支持特殊字符
让python cookie支持特殊字符 先对cookie做下简单的介绍 cookie的作用: tcp协议能够通过三次握手建立连接.client发送的多次请求能够通过句柄维护同一个连接.可是http协 ...
- <<Python基础教程>>学习笔记 | 第11章 | 文件和素材
打开文件 open(name[mode[,buffing]) name: 是强制选项,模式和缓冲是可选的 #假设文件不在.会报以下错误: >>> f = open(r'D:\text ...
- NYOJ 10 skiing (深搜和动归)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪. 由于滑雪的确非常刺激.但是为了获得速度.滑的区域必须向下倾斜.并且 ...
- Atitit.木马病毒的操作注册表原理 系统服务管理器 atiSysService
Atitit.木马病毒的操作注册表原理 系统服务管理器 atiSysService 1. atiSysService1 2. atiSysService 原理1 3. Java code1 4. 参 ...