我想知道如何设计带有参数的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/

10-09 19:59