Java设计模式09:单例模式的强化(控制实例个数n)

1. 单例模式的本质:

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

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

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

(2)缓存:饿汉式

3. 单例模式的变形使用

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

 1 package com.himi.hebao.singleinstance;
 2 
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 
 6 public class Person {
 7     // 定义用来缓存数据的容器
 8     private static Map map = new HashMap();
 9     // 用来记录当前正在使用哪一个实例,初始化值为1
10     private static int num = 1;
11     // 用来记录需要控制的实例的总数为3个
12     private static int count = 3;
13 
14     // 私有化Person构造方法
15     private Person() {
16     }
17 
18     public static Person getInstance() {
19         // 1.到缓存里面查找需要使用的数据
20         Person person = (Person) map.get(num);
21         // 1.1 如果找不到
22         if (person == null) {
23             // 就新建一个数据(或者获取一个数据)
24             person = new Person();
25             // 然后把新的数据设置回到缓存中
26             map.put(num, person);
27         }
28         // 每一次调用,就设置num加1;
29         num++;
30         // 如果num超过需要控制的总数,那么把num设置为1,开始重复循环使用
31         if (num > count) {
32             num = 1;
33         }
34         // 1.2 如果找到了就直接使用
35         return person;
36     }
37     
38     public static void main(String[] args) {
39         Person person1 = Person.getInstance();
40         System.out.println("person1====="+person1);
41         
42         Person person2 = Person.getInstance();
43         System.out.println("person2====="+person2);
44         
45         Person person3 = Person.getInstance();
46         System.out.println("person3====="+person3);
47         
48         Person person4 = Person.getInstance();
49         System.out.println("person4====="+person4);
50         
51         Person person5 = Person.getInstance();
52         System.out.println("person5====="+person5);
53     }
54 
55 }

运行效果如下:

 

原文地址:https://www.cnblogs.com/hebao0514/p/4888146.html