我发现自己需要重写一个静态方法,仅仅是因为它最有意义,但我也知道这是不可能的。
超类Entity.java:
abstract public class Entity<T> {
public Entity() {
//set up database connection
}
abstract public static Map<Object, T> getAll();
abstract public void insert();
abstract public void update();
protected void getData(final String query) {
//get data via database
}
protected void executeQuery(final String query) {
//execute sql query on database
}
}
许多具体实现之一,Account.java:
public class Account extends Entity<Account> {
private final static String ALL_QUERY = "SELECT * FROM accounts";
private final static String INSERT_QUERY = "INSERT INTO accounts (username, password) VALUES(?, ?)";
private final static String UPDATE_QUERY = "UPDATE accounts SET password=? WHERE username=?";
private String username;
private String password;
public Account(final String username, final String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(final String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(final String password) {
this.password = password;
}
@Override
public static Map<Object, Account> getAll() {
//return a map using the ALL_QUERY string, calls getData(string);
}
@Override
public void insert() {
//insert this using INSERT_QUERY, calls executeQuery(string);
}
@Override
public void update() {
//update this using UPDATE_QUERY, calls executeQuery(string);
}
}
我没有深入解释代码,但任何一般性的反馈也将不胜感激,我希望评论能解释清楚。
所以基本上我认为我们都同意 usingAccount.getAll()
更有意义new Account().getAll()
(如果我会为它引入一个虚拟语法)。但是我确实想让它扩展Entity
类,目前它只是为了方便,但稍后我可能不得不使用集合/列表/多集合并对所有这些Entity
执行update()
操作,例如,如果我要构建一些队列表演每分钟更新一次。
那么,有没有办法getAll()
正确构建?
问候。