看板 java 關於我們 聯絡資訊
之前剛接觸完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)
jinmin88:你也可以用一個泛型Dao (具有CRUD+下HQL功能)走天下呀 09/06 01:34
flowwinds:個人認知, 如果DAO method內容有改變的話, 因controller 09/07 08:42
flowwinds:用的是DAO的介面, 所以就controller不用改什麼, 前提是 09/07 08:44
flowwinds:DAO的介面設計的夠好吧,後續沒有要改interface的狀況 09/07 08:47
flowwinds:DI/IOC是把物件的相依關係從code中移到XML中, 若要抽換 09/07 08:49
flowwinds:所相依實作的class,改XML就好;個人想法有錯請指正,tks 09/07 08:51
flowwinds:更正一下, 不見得都XML, 而是物件跟物件間都相依於介面 09/07 09:01
flowwinds:或抽象 09/07 09:02
ghost3401:謝謝分享!但還是很抽象的概念..只能從實作了解了 09/07 10:17
ghost3401:但想請問"如果DAO method內容有改變的話....." 09/07 10:26
ghost3401:C部分不用改? 但如果DAO不用介面方式 只要回傳和傳入 09/07 10:28
ghost3401:沒改變,C也不用改呢? 09/07 10:30
flowwinds:對啊, 這樣C也不用改 09/07 13:02
flowwinds:但我了解因為C用到的實際DAO有變動,C的.class需重編譯 09/07 13:09
flowwinds:底下cyclone350兄說的比較清楚, 依賴介面是為了DAO可能 09/07 13:41
flowwinds:的變動, 這是其中一個原因 09/07 13:42