如果沒有工廠模式,可能會出現(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)注,更多福利

這里寫圖片描述