【发布时间】:2013-09-15 19:35:42
【问题描述】:
在其静态构造函数中接受一个参数的单例是个好主意吗?我会遇到并发问题吗?
public class DataHelper {
private static DataHelper singleton = null;
private Listener<Object> listener;
public static DataHelper getInstance(Listener<Object> listener) {
if(singleton == null) {
singleton = new DataHelper();
}
singleton.listener = listener;
return singleton;
}
}
【问题讨论】:
-
即使没有参数也会有并发问题。
-
您应该在构造函数上使用
Lock。此外,为多个侦听器设计(为什么不呢?)并将ArrayList<MyListnerInterface>与addListener和removeListener方法一起使用。 -
单例(设计模式)本身并不是一个好的选择。使用 Dagger 或 RoboGuice 注入单例。
-
我很高兴听到这个消息! =) 我是否必须在数据访问期间手动管理同步?
-
我猜你可能想使用
Flyweight pattern而不是单例。
标签: java android design-patterns singleton