1. 创建泛型单例(5分) 2. 消息中心类继承泛型单例,消息中心创建添加侦听,删除侦听与广播的方法
时间: 2024-12-19 19:27:55 浏览: 18
在Java中,创建泛型单例可以借助静态工厂模式来实现,这样既可以保证只有一个实例,又能提供类型的灵活性。以下是创建一个简单的泛型单例类的例子:
```java
public class GenericSingleton<T> {
private static final T INSTANCE;
// 防止构造函数外部直接实例化
private GenericSingleton() {}
// 使用同步块保证线程安全
public synchronized static T getInstance(Class<T> type) {
if (INSTANCE == null) {
INSTANCE = type.getDeclaredConstructor().newInstance(); // 创建新实例
}
return INSTANCE;
}
// 提供通用的方法,如添加、删除和广播
public void addListener(T listener) {
// 实现添加监听器的逻辑,这里省略
}
public void removeListener(T listener) {
// 实现移除监听器的逻辑,这里省略
}
public void broadcast(Object message) {
// 发送广播给所有监听者,这里假设T实现了某个接收消息的接口,例如MessageReceiver
for (T listener : getListeners()) {
// 假设getListeners()返回所有已注册的监听者列表
listener.receive(message);
}
}
private List<T> listeners; // 假设有一个私有字段用于存储监听者
// 获取监听者列表,实际项目中可以根据需求设计具体的获取逻辑
private List<T> getListeners() {
if (listeners == null) {
listeners = new ArrayList<>();
}
return listeners;
}
}
```
在这个例子中,`GenericSingleton`是一个模板类,用户可以指定任意类型的单例对象。通过`getInstance()`方法获取并保持唯一实例,同时提供了添加、删除侦听和广播消息的功能。
阅读全文