设计模式——多例设计模式

JavaSE进阶——该篇主要讲解Java中的多例设计模式

sum: 保证类中有固定数量的对象

多例设计模式及其作用

多例模式,是一种常用的设计模式之一。通过多例模式可以保证项目中,应用该模式的类有固定数量的实例

多例设计模式的作用

多例类要自我创建并管理自己的实例,还要向外界提供获取本类实例的方法。

  • 使用场景:线程池

    1
    线程池 = Executors.newFixedThreadPool(3);

多例设计模式实现步骤

  1. 创建一个类, 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。
  1. 在类中定义该类被创建对象的总数量

  2. 在类中定义存放类实例的list集合

  3. 在类中提供静态代码块,在静态代码块中创建类的实例

  4. 提供获取类实例的静态方法

多例设计模式的案例

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 moreinstance;

import java.util.ArrayList;
import java.util.Random;

/*
需求 : 某一个学科有固定3位老师,年级中上该课程的老师就是这三位老师其中一位
要求使用多例模式 ,每次获取的都是这三位老师其中一位

实现步骤 :
1.创建一个类, 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。
2.在类中定义该类被创建对象的总数量
3.在类中定义存放类实例的list集合
4.在类中提供静态代码块,在静态代码块中创建类的实例
5.提供获取类实例的静态方法
*/
public class Teacher {
// 1.创建一个类, 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。
private Teacher() {
}

// 2.在类中定义该类被创建对象的总数量
private static int maxCount = 3;

// 3.在类中定义存放类实例的list集合
private static ArrayList<Teacher> list = new ArrayList<>();// {teacher1 , teacher2 , teacher3}

// 4.在类中提供静态代码块,在静态代码块中创建类的实例
static {
for (int i = 0; i < maxCount; i++) {
list.add(new Teacher());
}
}

// 5.提供获取类实例的静态方法
public static Teacher getInstance() {
int index = new Random().nextInt(3);// [0 - 2]
return list.get(index);
}

}