[問題] 請益Spring WEB MVC開發的問題

看板java作者 (阿hoho)時間12年前 (2013/09/06 00:53), 編輯推噓1(1015)
留言16則, 3人參與, 最新討論串1/4 (看更多)
之前剛接觸完STRUTS2..還沒摸熟 馬上就碰到SPRING.. ------------------------------------- 教學網站上,基本概念用不同DEVICE存取的例子: public interface IDeviceWriter { public void saveToDevice(); } public class FloppyWriter implement IDeviceWriter { public void saveToDevice() { .... // 實際儲存至Floppy的程式碼 } } public class UsbDiskWriter implement IDeviceWriter { public void saveToDevice() { .... // 實際儲存至UsbDisk的程式碼 } } (謝謝梁葛格文章...) 在最近接手的專案,使用STRUTS2 的 Action 作為 Controller 用 annotaion 及 XML 設定方式注入需要的 Service 及 DAO; 我想請教的是: 1. 每個Service 和 DAO 都要先有個空介面,再來實作, 最後透過注入的方式於Controller使用;這樣做法是以後維護及延展性佳(?) 但DAO通常不是寫了就寫了,需要的話就一直在裡面加方法取資料..!? 一個DAO用一個介面,CODE中也沒有看到重複用同一個DAO介面的; 所以在DAO部分,每個DAO使用一介面實作用意是? 2. 呈上..Service部分也是一樣,目前看到的是 每一個Service實作一個介面,不重複 沒有範例中同是儲存體,但寫入方法不同的情況; 所以DI IOC特性在我這個專案中,WEB MVC帶來益處是甚麼? 麻煩大家觀念指正,感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.69.32 ※ 編輯: ghost3401 來自: 114.45.69.32 (09/06 00:56)

09/06 01:34, , 1F
你也可以用一個泛型Dao (具有CRUD+下HQL功能)走天下呀
09/06 01:34, 1F

09/07 08:42, , 2F
個人認知, 如果DAO method內容有改變的話, 因controller
09/07 08:42, 2F

09/07 08:44, , 3F
用的是DAO的介面, 所以就controller不用改什麼, 前提是
09/07 08:44, 3F

09/07 08:47, , 4F
DAO的介面設計的夠好吧,後續沒有要改interface的狀況
09/07 08:47, 4F

09/07 08:49, , 5F
DI/IOC是把物件的相依關係從code中移到XML中, 若要抽換
09/07 08:49, 5F

09/07 08:51, , 6F
所相依實作的class,改XML就好;個人想法有錯請指正,tks
09/07 08:51, 6F

09/07 09:01, , 7F
更正一下, 不見得都XML, 而是物件跟物件間都相依於介面
09/07 09:01, 7F

09/07 09:02, , 8F
或抽象
09/07 09:02, 8F

09/07 10:17, , 9F
謝謝分享!但還是很抽象的概念..只能從實作了解了
09/07 10:17, 9F

09/07 10:26, , 10F
但想請問"如果DAO method內容有改變的話....."
09/07 10:26, 10F

09/07 10:28, , 11F
C部分不用改? 但如果DAO不用介面方式 只要回傳和傳入
09/07 10:28, 11F

09/07 10:30, , 12F
沒改變,C也不用改呢?
09/07 10:30, 12F

09/07 13:02, , 13F
對啊, 這樣C也不用改
09/07 13:02, 13F

09/07 13:09, , 14F
但我了解因為C用到的實際DAO有變動,C的.class需重編譯
09/07 13:09, 14F

09/07 13:41, , 15F
底下cyclone350兄說的比較清楚, 依賴介面是為了DAO可能
09/07 13:41, 15F

09/07 13:42, , 16F
的變動, 這是其中一個原因
09/07 13:42, 16F
文章代碼(AID): #1IABRnDm (java)
討論串 (同標題文章)
文章代碼(AID): #1IABRnDm (java)