单例和多例 Java代码例子
时间: 2023-09-09 20:07:57 浏览: 52
单例模式(Singleton Pattern)是一种常见的设计模式,它可以确保一个类只有一个实例,并提供全局访问点。
下面是一个简单的单例类的 Java 代码示例:
```java
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
在上面的代码中,我们使用了一个私有的构造函数,这样就防止了其他类直接通过 `new` 运算符创建该类的实例。同时,我们定义了一个静态的 `getInstance()` 方法,该方法返回 `Singleton` 类的唯一实例。这里使用了懒汉式的单例模式,也就是在第一次使用 `getInstance()` 方法时才创建实例。
下面是多例模式(Multiton Pattern)的 Java 代码示例:
```java
public class Multiton {
private static final int MAX_INSTANCES = 2;
private static Map<String, Multiton> instances = new HashMap<>();
private static int count = 0;
private Multiton() {}
public static synchronized Multiton getInstance(String key) {
if(!instances.containsKey(key) && count < MAX_INSTANCES) {
instances.put(key, new Multiton());
count++;
}
return instances.get(key);
}
}
```
在上面的代码中,我们使用了一个私有的构造函数,这样就防止了其他类直接通过 `new` 运算符创建该类的实例。同时,我们定义了一个静态的 `getInstance()` 方法,该方法接收一个 `key` 参数,并返回一个 `Multiton` 类的实例。因为我们希望创建多个实例,所以我们使用了一个 `Map` 存储所有的实例。同时,我们也定义了一个 `MAX_INSTANCES` 常量,用于限制实例的数量。在 `getInstance()` 方法中,我们首先检查 `instances` 中是否已经存在了指定的实例,如果不存在且实例数量没有达到上限,就创建一个新的实例并将其加入 `instances` 中。最后,我们返回指定 `key` 对应的实例。