zoukankan      html  css  js  c++  java
  • 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 }

    运行效果如下:

     

  • 相关阅读:
    socket.io的抽象实现:engine.io
    Juicer javascript 模板引擎
    phonegap 开发案例
    安卓升级提示 phoneGap APK软件更新提示
    搭建Titanium开发环境
    phonegap WebApp
    vue-cli 配置vue项目环境笔记
    从一张表里面查询后十条数据的前七条
    js实现文字搬运工
    MySQL —— 数据库数据备份命令 mysqlump 的使用
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4888146.html
Copyright © 2011-2022 走看看