我想知道如何设计带有参数的lazyholder单例模式。
我只知道没有参数但不带参数。
问题如下,当构造private static final DBHelper INSTANCE = new DBHelper();
时
我该如何解决?
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context=context;
}
public static DBHelper getInstance(){
return DBHelper.DBHelperHolder.INSTANCE;
}
private static class DBHelperHolder{
private static final DBHelper INSTANCE = new DBHelper();
}
最佳答案
您可以使用DCL模式,例如:
public class DBHelper {
private static volatile DBHelper instance;
public static DBHelper getInstance(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
if (instance == null) {
synchronized (DBHelper .class) {
if (instance == null) {
instance = new DBHelper(context, name, factory, version);
}
}
}
return instance;
}
}
但是,每次调用
getInstance
时都需要提供参数。关于android - 如何在带有参数的android中设计惰性持有人模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59297517/