spark 大型項目實戰(zhàn)(十二):用戶訪問session分析(十二) --工廠模式講解以及DAOFactory開發(fā)

如果沒有工廠模式,可能會出現(xiàn)的問題:

ITaskDAO接口和TaskDAOImpl實現(xiàn)類;實現(xiàn)類是可能會更換的;那么,如果你就使用普通的方式來創(chuàng)建DAO,比如ITaskDAO taskDAO = new TaskDAOImpl(),那么后續(xù),如果你的TaskDAO的實現(xiàn)類變更了,那么你就必須在你的程序中,所有出現(xiàn)過TaskDAOImpl的地方,去更換掉這個實現(xiàn)類。這是非常非常麻煩的。

如果說,你的TaskDAOImpl這個類,在你的程序中出現(xiàn)了100次,那么你就需要修改100個地方。這對程序的維護(hù)是一場災(zāi)難。

工廠設(shè)計模式

對于一些種類的對象,使用一個工廠,來提供這些對象創(chuàng)建的方式,外界要使用某個類型的對象時,就直接通過工廠來獲取即可。不用自己手動一個一個地方的去創(chuàng)建對應(yīng)的對象。

那么,假使我們有100個地方用到了TaskDAOImpl。不需要去在100個地方都創(chuàng)建TaskDAOImpl()對象,只要在100個地方,都使用TaskFactory.getTaskDAO()方法,獲取出來ITaskDAO接口類型的對象即可。

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

public class DAOFactory {

    /**
     * 獲取任務(wù)管理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());
        }
    }
}

輸出結(jié)果

test

歡迎關(guān)注,更多福利

這里寫圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容