java 設(shè)計模式(DAO)的實(shí)例詳解
java 設(shè)計模式(DAO)的實(shí)例詳解
應(yīng)用場景:在Java程序中,經(jīng)常需要把數(shù)據(jù)持久化,也需要獲取持久化的數(shù)據(jù),但是在進(jìn)行數(shù)據(jù)持久化的過程中面臨諸多問題(如:數(shù)據(jù)源不同、存儲類型不同、供應(yīng)商不同、訪問方式不同等等),請問如何能以統(tǒng)一的接口進(jìn)行數(shù)據(jù)持久化的操作?
其實(shí)這個我沒學(xué)號(≧ ﹏ ≦)。我的理解就是一個產(chǎn)品面向的用戶不是單一的,所以我們要兼容許多情況如前面提到的數(shù)據(jù)源不同、存儲類型不同、供應(yīng)商不同、訪問方式不同等等。
★ 解決方案
DAO的理解:
1、DAO其實(shí)是利用組合工廠模式來解決問題的,并沒有帶來新的功能,所以學(xué)的其實(shí)就是個思路。
2、DAO理論上是沒有層數(shù)限制的
3、DAO的各層理論上是沒有先后的。
項目種文件樣子:
一些代碼實(shí)現(xiàn)
接口
public interface DepDAO { public void create(String userId,String name); }
工廠方法(多個選擇實(shí)現(xiàn))
public class F1Factory { private F1Factory(){ } public static DepDAO getDepDAO(){ //根據(jù)用戶在配置文件中指定的類型來選擇具體的某個實(shí)現(xiàn)類 //type:類似我們學(xué)號指定的信息: 14+ 06+ 601+ 01 // 本例如: 1(type1機(jī)器類型)+ 2(type2存儲類型)+ 2(type3供應(yīng)商) + 1(type4訪問方式) int type1=1;//第1層工廠的選擇類型,按理應(yīng)該從用戶的配置信息中獲取,這里直接模擬了 if(type1==1){ return F2AFactory.getDepDAO(); }else if(type1==2){ return F2BFactory.getDepDAO(); } return null; } }
public class F2AFactory { private F2AFactory(){ } public static DepDAO getDepDAO(){ int type2=2;//第2層工廠的選擇類型,按理應(yīng)該從用戶的配置信息中獲取,這里直接模擬了 if(type2==1){ // return F3A_ODB_Factory.getDepDAO(); }else if(type2==2){ return F3_A_RDB_Factory.getDepDAO(); }else if(type2==3){ //return F3_A_XML_Factory.getDepDAO(); }else if(type2==4){ //return F3_A_FileFactory.getDepDAO(); } return null; } }
還有幾個工廠方法類似就不貼出來了
實(shí)現(xiàn)類
public class DepEJB_Impl implements DepDAO{ @Override public void create(String userId, String name) { System.out.println("利用JPA_Impl向數(shù)據(jù)庫寫入:"+userId+","+name); } }
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
java編程中拷貝數(shù)組的方式及相關(guān)問題分析
這篇文章主要介紹了java編程中拷貝數(shù)組的方式及相關(guān)問題分析,分享了Java中數(shù)組復(fù)制的四種方式,其次對二維數(shù)組的簡單使用有一段代碼示例,具有一定參考價值,需要的朋友可以了解下。2017-11-11在SpringBoot 中從application.yml中獲取自定義常量方式
這篇文章主要介紹了在SpringBoot 中從application.yml中獲取自定義常量方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04IDEA如何自動生成serialVersionUID的設(shè)置
這篇文章主要介紹了IDEA如何自動生成 serialVersionUID 的設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java substring方法實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java substring方法實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05深入理解springMVC中的Model和Session屬性
這篇文章主要介紹了深入理解springMVC中的Model和Session屬性,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12使用Java7的Files工具類和Path接口來訪問文件的方法
下面小編就為大家分享一篇使用Java7的Files工具類和Path接口來訪問文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11