这个question与我想要完成的任务有很大关系,并提供了很好的见解。虽然我觉得答案仍然不清楚,因为我使用的是 Java 而不是 C++。
我有一个类 (SQLService),它有一个 SQL 连接和 3 个使用 JDBC 库管理的表。我正在构建一个私有(private)函数(buildInsertQuery),它接受每个表的数据并根据列数构建动态插入语句(请参阅下面的简单代码片段)
class SQLService {
private Table table1;
private Table table2;
private Table table3;
private Connection connection;
private String buildInsertQuery() {
// Builds SQL insert query String like "INSERT INTO blah (col1, col2, col3) VALUES (?, ?, ?)
}
}
一种选择是为每个成员变量创建一个单独的函数。但是,由于无论使用哪个表,buildInsertQuery() 函数都会执行相同的操作,因此我觉得复制并粘贴相同的代码并为每个成员变量以不同的方式命名函数是非常多余的。
另一个选项是将表作为参数传递给
buildInsertQuery
(即buildInsertQuery(Table table)
)。但是,读完this后,我感觉这样效率也很低。
上面提到的文章有使用类成员指针的解决方案。但是,我不确定 Java 中是否有等效的东西。
谢谢!
最佳答案
使用通用功能和表作为参数创建一个私有(private)基函数,添加 3 个专门针对三个表的方法,这些方法使用相应的表调用基函数。
class SQLService {
private Table table1;
private Table table2;
private Table table3;
private Connection connection;
private String buildInsertQuery(Table table) {
// Builds SQL insert query String l
...
}
// perhaps memoize the result for reuse.
String buildInsertQueryForTable1() {
return buildInsertQuery(table1);
}
// similarly for other tables
}
关于java - OOD - 避免每个成员变量使用重复函数 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063604/