1. 单例模式的本质:

控制实例数目(目的节约资源)

2. 单例模式体现的一些思想:

(1)延迟装载(Lazy Load):懒汉式

(2)缓存:饿汉式

3. 单例模式的变形使用:

控制使用实例个数为3个(实例池):

 package com.himi.hebao.singleinstance;

 import java.util.HashMap;
import java.util.Map; public class Person {
// 定义用来缓存数据的容器
private static Map map = new HashMap();
// 用来记录当前正在使用哪一个实例,初始化值为1
private static int num = 1;
// 用来记录需要控制的实例的总数为3个
private static int count = 3; // 私有化Person构造方法
private Person() {
} public static Person getInstance() {
// 1.到缓存里面查找需要使用的数据
Person person = (Person) map.get(num);
// 1.1 如果找不到
if (person == null) {
// 就新建一个数据(或者获取一个数据)
person = new Person();
// 然后把新的数据设置回到缓存中
map.put(num, person);
}
// 每一次调用,就设置num加1;
num++;
// 如果num超过需要控制的总数,那么把num设置为1,开始重复循环使用
if (num > count) {
num = 1;
}
// 1.2 如果找到了就直接使用
return person;
} public static void main(String[] args) {
Person person1 = Person.getInstance();
System.out.println("person1====="+person1); Person person2 = Person.getInstance();
System.out.println("person2====="+person2); Person person3 = Person.getInstance();
System.out.println("person3====="+person3); Person person4 = Person.getInstance();
System.out.println("person4====="+person4); Person person5 = Person.getInstance();
System.out.println("person5====="+person5);
} }

运行效果如下:

 

Java设计模式09:单例模式的强化(控制实例个数n)的更多相关文章

  1. java 设计模式之单例模式

    -------Success is getting what you want, happiness is wanting what you get. java设计模式之单例模式(Singleton) ...

  2. 折腾Java设计模式之单例模式

    博文原址:折腾Java设计模式之单例模式 单例模式 Ensure a class has only one instance, and provide a global point of access ...

  3. Java 设计模式之单例模式(一)

    原文地址:Java 设计模式之单例模式(一) 博客地址:http://www.extlight.com 一.背景 没有太多原由,纯粹是记录和总结自己从业以来经历和学习的点点滴滴. 本篇内容为 Java ...

  4. java设计模式1——单例模式

    java设计模式1--单例模式 1.单例模式介绍 1.1.核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 1.2.常见场景 1.3.单例模式的优点 1.4.常见的五种单例模式实现 ...

  5. java设计模式之单例模式你真的会了吗?(懒汉式篇)

    java设计模式之单例模式你真的会了吗?(懒汉式篇) 一.什么是单例模式? 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供 ...

  6. Java设计模式之单例模式(七种写法)

    Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton { private static Singleto ...

  7. java设计模式之单例模式(七种方法)

    单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...

  8. 深入探索Java设计模式之单例模式

    单例模式可确保在给定的时间实例中只能创建一个具有全局访问点的对象.这是面向对象编程中最常用的技术之一.尽管它很简单,但从类设计的角度来看可能是最简单的,但是在尝试实现它们之前,必须先解决一些细微的问题 ...

  9. java设计模式之单例模式(几种写法及比较)

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

随机推荐

  1. MD5加密帮助类

    using System; using System.Collections.Generic; using System.Text; namespace AIMSCommon { /// <su ...

  2. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.3.1

    Let $A=A_1\oplus A_2$. Show that (1). $W(A)$ is the convex hull of $W(A_1)$ and $W(A_2)$; i.e., the ...

  3. Pyhton 一行代码求Fibonacci第N项

    递归定义很简单,效率当然很低下,且极易超出栈空间大小. 这样做纯粹是为了体现python的语言表现力而已, 并没有任何实际意义. def fib(x): return fib(x-1) + fib(x ...

  4. XMPP的Stanzas

    客户端需要使用JID作为身份标石 : [user "@"]domain["/"resource]加域名可以区别重名的用户user,resource可以区分用户登 ...

  5. Install PhoneGap

    To Install, ensure that you have NodeJS installed, then open your commandline and run the following: ...

  6. hdoj 1234 开门人和关门人

    开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) #include ...

  7. [OC Foundation框架 - 5] NSString的常用方法

             NSString *s1 = ";   1.比较 使用 == 号比较的是字符串地址 NSString *s4 = @"abcdefg"; NSStrin ...

  8. 详解Objective-C的meta-class

    比较简单的一篇英文,重点是讲解meta-class.翻译下,加深理解. 原文标题:What is a meta-class in Objective-C? 原文地址:http://www.cocoaw ...

  9. 转载C#函数式程序设计初探——基础理论篇

    转载网址:http://www.cnblogs.com/Hlia/archive/2013/04/20/3029701.html 个人认为,C#语言的某些设计并不非常适合函数式开发,比如它的类型推断并 ...

  10. SQL2005查询所有表的大小

    IF NOT EXISTS (SELECT * FROM [tempdb].sys.objects WHERE object_id = OBJECT_ID(N'[tempdb].[dbo].[tabl ...