1

我有一个这样的数据库连接类(简化):

public class SQL {

private static SQL instance = null;

private static String ADRESS;

private SQL() {
    try {
        // Settings
        settings = Settings.getInstance();
        ADDRESS = settings.getAdress;

        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://" + ADRESS + "...");
    }
    catch (SQLException e) {
        throw e;
    }
}

public static SQL getInstance() {
    if(instance == null) {
        instance = new SQL();
    }
    return instance;
}

public String select(...) {
    // SELECT Code
}

public String update(...) {
    // UPDATE Code
}

public String insert(...) {
    // INSERT Code
}

}

但现在我需要两种 SQL 变体,它们的主要区别仅在于设置(不同的数据库)。所以我想把SQL变成一个抽象类,只覆盖两个继承类中的构造函数。但据我所知,不可能有一个抽象的私有构造函数!?那么如何将类 SQL 更改为抽象类呢?

谢谢,我希望有人能理解问题:)

4

2 回答 2

0

我会使用这样的东西:

public static SQL getOrMakeInstance1() {
    if(instance1 == null) {
        instance1 = new SQL(pram11,param12,param13);
    }
    return instance1;
}


public static SQL getOrMakeInstance2() {
    if(instance2 == null) {
        instance2 = new SQL(pram21,param22,param23);
    }
    return instance2;
}

-也许是工厂模式,我不知道设计模式的名称:)

我希望它有所帮助。

于 2013-08-06T20:16:06.463 回答
0

我不确定你需要超过 1 节课。如果您更改类的构造函数以获取Settings实例怎么办?

public SQL(Settings settings){
    ADDRESS = settings.getAddress();

    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://" + ADRESS + "...");
}

然后你做了什么不同的设置实例

Settings settings = ...
SQL sql = new SQL(settings);

Settings differentSettings =...
SQL differentSql = new SQL(differentSettings);
于 2013-08-06T20:16:07.437 回答