• 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 }

    运行效果如下:

     

  • 相关阅读:
    Saltstack module gem 详解
    Saltstack module freezer 详解
    Saltstack module firewalld 详解
    Saltstack module file 详解
    Saltstack module event 详解
    Saltstack module etcd 详解
    Saltstack module environ 详解
    Saltstack module drbd 详解
    Saltstack module dnsutil 详解
    获取主页_剥离百度
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4888146.html
Copyright © 2020-2023  润新知