背景: 手頭現有的一個項目, 是給一家企業做的電子商務的網站, 是用 Sql server 作為資料庫的. 之後, 接到另外一家需求類似的項目, 但是是用 Access, 不能使用 Sql Server, 需要修改原來的代碼. 結果, CV 一大頓, 錯誤百出. 試想, 如果将來還要使用 Oracle 資料庫, 那麼估計應該就直接死人了.
最基本的通路資料的程式
為了簡化問題, 這裡我們僅僅提取出最簡單的表結構.
public class User {
private int _id;
private String name;
public int get_id() { return _id; }
public void set_id(int _id) { this._id = _id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
public class SqlserverUser {
public void Insert(User user){
System.out.println("在 Sql server 中給 User 表增加一條記錄");
}
public User getUser(int id){
System.out.println("在 sql server 中根據" + id + "得到User 表的一條記錄");
return null;
}
}
public class Main {
public static void main(String[] args) {
User user = new User();
SqlserverUser su = new SqlserverUser();
su.Insert(user);
su.getUser();
}
}
但是這個樣子寫下去的話, 後期的維護直接懵逼啊. 改變資料庫必然要改動代碼, 這是不可避免的. 但是我們需要做這樣一件事, 優化代碼, 做到: 改動最少的代碼, 就可以實作不同資料庫的通路.
工廠方法模式的資料通路程式
這裡寫代碼片