從設計的角度看,有一個全局對象從spring上下文中返回單例,有什麼不對嗎?返回彈簧單例的全局對象
我剛剛在一個新的地方開始工作,DAO都通過一個名爲DAOUtils的全局對象來訪問,其中每個DAO從spring上下文中獲取單例DAO bean。因此,如果您想要保存採購訂單,例如,您會說
DAOUtils.getPurchaseOrderDao()。savePurchaseOrder(po);
或類似的東西。
我已經習慣將DAO按需要注入到需要它們的每個類中,所以這讓我感到很震驚。從設計的角度來看它有什麼問題嗎?如果是的話,你能解釋爲什麼它是一個壞主意嗎?
我可以看到它讓單元測試變得困難,因爲沒有辦法阻止代碼調用實際的DAOUtils類..?我想這可能會被描述爲緊耦合引起的問題?
你說得對。設計這個的人使用了Spring而不明白什麼是依賴注入。 – 2013-05-04 08:26:54
最好的規則是不要使用靜態工具類,也不要使用「新」來表示非域對象 – 2013-05-04 08:28:05
也讀取Clen代碼。創建一個* Util類是通往mudball的道路。您需要爲課程添加任何新的DAO。這個Util類依賴於每個DAO都不太好。 – 2013-05-04 08:50:18