Java多例设计模式实例详解

时间:2022-11-06 20:08:17

本文实例讲述了java多例设计模式。分享给大家供大家参考,具体如下:

一、多例设计模式定义

多例设计模式就是存在多个对象实例,供外部应用裯用,比喻数据库连接池。

二、多例模式静态类图

Java多例设计模式实例详解

三、多例模式代码实现

1. 多例模式核心类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.demo.multipleton;
import java.util.arraylist;
/**
 * 多例模式
 *
 * @author
 *
 */
public class multipleton {
  // 多例数量
  private static final int n = 10;
  // 存放n个实例对象的容器
  private static arraylist<multipleton> list = new arraylist<multipleton>(n);
  // 每个对象的序号 标识
  private int no;
  // 私有构造方法 防止外界应用程序实例化
  private multipleton(int no) {
    this.no = no;
    system.out.println("-- create multipleton object[" + no + "]!");
  }
  // 实例化n个对象实例
  static {
    // 添加multipleton对象实例
    for (int i = 0; i < n; i++) {
      list.add(new multipleton(i));
    }
  }
  /**
   * 随机获得 实例对象
   */
  public static multipleton getrandominstance() {
    // 获得随机数字
    int num = (int) (math.random() * n);
    // 获得list中的对象实例
    return list.get(num);
  }
  public int getno() {
    return no;
  }
  public void setno(int no) {
    this.no = no;
  }
}

2. 多例模式客户端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.demo;
import com.demo.multipleton.multipleton;
/**
 * 客户端应用程序
 *
 * @author
 *
 */
public class multipletonclient {
  /**
   * @param args
   */
  public static void main(string[] args) {
    // 获得multipleton对象实例
    multipleton multipleton = multipleton.getrandominstance();
    system.out.println("multipleton:" + multipleton.getno());
    // 在次获得multipleton对象实例
    multipleton multipleton2 = multipleton.getrandominstance();
    system.out.println("multipleton2:" + multipleton2.getno());
    // 比较两个对象是否是同一个对象实例
    if (multipleton == multipleton2) {
      system.out.println("--这是同一个对象!");
    } else {
      system.out.println("--这是不同的对象!");
    }
  }
}

3. 运行结果

-- create multipleton object[0]!
-- create multipleton object[1]!
-- create multipleton object[2]!
-- create multipleton object[3]!
-- create multipleton object[4]!
-- create multipleton object[5]!
-- create multipleton object[6]!
-- create multipleton object[7]!
-- create multipleton object[8]!
-- create multipleton object[9]!
multipleton:2
multipleton2:2
--这是同一个对象!

4. 从上面程序运行结果,可以得出两个结论

① 实例化n个实例对象的过程只执行一次。

② 随机获得multipleton对象。

希望本文所述对大家java程序设计有所帮助。

原文链接:https://blog.csdn.net/chengqiuming/article/details/70140534