挑釁都能跟得上。其實你應該看看DAO(數據訪問對象)模式。
模型類本身只負責將信息從一個邏輯實例轉移到另一個邏輯實例,並且應該只包含geter和setter方法。
DAO類是負責存儲更新或檢索信息形成的一些數據源(數據庫)。這裏是例子DAO模式:
public class BookDAO {
private PreparedStatement saveStmt;
private PreparedStatement loadStmt;
public DBBookDAO(String url, String user, String pw) {
Connection con = DriverManager.getConnection(url, user, pw);
saveStmt = con.prepareStatement("INSERT INTO books(isbn, title, author) "
+"VALUES (?, ?, ?)");
loadStmt = con.prepareStatement("SELECT isbn, title, author FROM books "
+"WHERE isbn = ?");
}
public Book loadBook(String isbn) {
Book b = new Book();
loadStmt.setString(1, isbn);
ResultSet result = loadStmt.executeQuery();
if (!result.next()) return null;
b.setIsbn(result.getString("isbn"));
b.setTitle(result.getString("title"));
b.setAuthor(result.getString("author"));
return b;
}
public void saveBook(Book b) {
saveStmt.setString(1, b.getIsbn());
saveStmt.setString(2, b.getTitle());
saveStmt.setString(3, b.getAuthor());
saveStmt.executeUpdate();
}
}
這在很大程度上取決於你使用的框架。 – maba 2013-04-28 08:48:51
這裏的一些討論 - http://stackoverflow.com/questions/538870/java-static-methods-best-practices。我個人不會使用靜態方法,因爲它們通常很難測試。另外,如果您的應用支持多租戶(即兩個或更多不同的用戶組),那麼這可能會變得更加困難。 – 2013-04-28 09:05:54
在我看來,MVC模式被用來推廣封裝的概念,在這個意義上說,沒有其他類應該直接訪問它的'數據成員'並且有一定的擴展'成員函數'。因此,我猜創建實例方法,應該是第一個選擇... :-) – 2013-04-28 09:23:53