天天看點

2. 有關工廠的幾個模式(二) 抽象工廠

    背景: 手頭現有的一個項目, 是給一家企業做的電子商務的網站, 是用 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();
    }
}
           

    但是這個樣子寫下去的話, 後期的維護直接懵逼啊. 改變資料庫必然要改動代碼, 這是不可避免的. 但是我們需要做這樣一件事, 優化代碼, 做到: 改動最少的代碼, 就可以實作不同資料庫的通路.

工廠方法模式的資料通路程式
這裡寫代碼片
           

繼續閱讀