1. 程式人生 > >大資料專案實戰之十一:11.工廠模式講解以及DAOFactory開發

大資料專案實戰之十一:11.工廠模式講解以及DAOFactory開發

如果沒有工廠模式,可能會出現的問題:

ITaskDAO介面和TaskDAOImpl實現類;實現類是可能會更換的;那麼,如果你就使用普通的方式來建立DAO,比如ITaskDAO taskDAO = new TaskDAOImpl(),那麼後續,如果你的TaskDAO的實現類變更了,那麼你就必須在你的程式中,所有出現過TaskDAOImpl的地方,去更換掉這個實現類。這是非常非常麻煩的。

如果說,你的TaskDAOImpl這個類,在你的程式中出現了100次,那麼你就需要修改100個地方。這對程式的維護是一場災難。

工廠設計模式

對於一些種類的物件,使用一個工廠,來提供這些物件建立的方式,外界要使用某個型別的物件時,就直接通過工廠來獲取即可。不用自己手動一個一個地方的去建立對應的物件。

那麼,假使我們有100個地方用到了TaskDAOImpl。不需要去在100個地方都建立TaskDAOImpl()物件,只要在100個地方,都使用TaskFactory.getTaskDAO()方法,獲取出來ITaskDAO介面型別的物件即可。

如果後面,比如說MySQL遷移到Oracle,我們重新開發了一套TaskDAOImpl實現類,那麼就直接在工廠方法中,更換掉這個類即可。不需要再所有使用到的地方都去修改。

/**
 * DAO工廠類
 */
public class DAOFactory {

    /**
     * 獲取任務管理DAO
     * @return DAO
     */
    public static ITaskDAO getTaskDAO() {
        return new TaskDAOImpl();
    }
    
}
/**
 * 任務管理DAO測試類
 */
public class TaskDAOTest {
    
    public static void main(String[] args) {
        ITaskDAO taskDAO = DAOFactory.getTaskDAO();
        Task task = taskDAO.findById(2);
        System.out.println(task.getTaskName());  
    }
    
}