工廠模式講解以及DAOFactory開發

淅淅瀝瀝nosame發表於2018-08-06

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

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

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

工廠設計模式

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

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

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

public class DAOFactory {

    /**
     * 獲取任務管理DAO
     * @return DAO
     */
    public static ITaskDAO getTaskDAO() {
        return new TaskDAOImpl();
    }

}

下面編寫一個test 測試下

public class Test {
    public static void main(String[] args) {

        ITaskDAO taskDAO= DAOFactory.getTaskDAO();
        Task task=taskDAO.findById(10000001L);
        if(task!=null){
            System.out.println(task.getTaskName());
        }
    }
}

輸出結果

test

本文轉載自【傳送門】 

相關文章