一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

java語(yǔ)言

java設計模式:DAO模式

時(shí)間:2025-03-13 03:43:39 java語(yǔ)言 我要投稿
  • 相關(guān)推薦

java設計模式:DAO模式

  導語(yǔ):Java是一門(mén)面向對象編程語(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強大和簡(jiǎn)單易用兩個(gè)特征。下面我們來(lái)看看DAO模式,希望對大家有所幫助。

  DAO設計模式

  ★ DAO的理解

  1、DAO其實(shí)是利用組合工廠(chǎng)模式來(lái)解決問(wèn)題的,并沒(méi)有帶來(lái)新的功能,所以學(xué)的其實(shí)就是個(gè)思路。

  2、DAO理論上是沒(méi)有層數限制的。

  3、DAO的各層理論上是沒(méi)有先后的。

  ★ DAO模式的本質(zhì)

  一層屏蔽一種變化

1
2
3
4
5
6
<strong>★DAO基礎          
DAO模式是標準的J2EE設計模式之一.開(kāi)發(fā)人員使用這個(gè)模式把底層的數據訪(fǎng)問(wèn)操作和上層的商務(wù)邏輯分開(kāi).一個(gè)典型的DAO實(shí)現有下列幾個(gè)組件:          
1. 一個(gè)DAO工廠(chǎng)類(lèi);          
2. 一個(gè)DAO接口;          
3. 一個(gè)實(shí)現DAO接口的具體類(lèi);          
4. 數據傳遞對象(有些時(shí)候叫做值對象).</strong>          

  下面舉例(多層dao接口的實(shí)現)

  具體實(shí)現:

  1.dao接口:

1
2
3
4
5
package cn.hncu.pattern.dao.dao;          
public interface DepDAO {          
   public void create(String userId, String name);          
}          

  2.dao工廠(chǎng)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package cn.hncu.pattern.dao.factory;          
import cn.hncu.pattern.dao.dao.DepDAO;          
import cn.hncu.pattern.dao.impl.a.factory.F2AFactory;          
import cn.hncu.pattern.dao.impl.b.factory.F2BFactory;          
public class F1Factory {          
   private F1Factory(){          
   }          
   public static DepDAO getDepDAO(){          
       int type1=1;//第一層工廠(chǎng)的選擇類(lèi)型,按理應該從用戶(hù)的配置信息中讀取,我們這里模擬了          
       if(type1==1){          
           return F2AFactory.getDepDAO();          
       }else if(type1==2){          
           return F2BFactory.getDepDAO();          
       }          
       return null;          
   }          
}          

  3.dao實(shí)現接口

  第二層dao

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package cn.hncu.pattern.dao.impl.a.factory;          
import cn.hncu.pattern.dao.dao.DepDAO;          
import cn.hncu.pattern.dao.impl.a.rdb.factory.F3A_RDB_Factory;          
import cn.hncu.pattern.dao.impl.b.factory.F2BFactory;          
public class F2AFactory {          
   private F2AFactory() {          
   }          
   public static DepDAO getDepDAO() {          
       int type2 = 3;// 第二層工廠(chǎng)的選擇類(lèi)型,按理應該從用戶(hù)的配置信息中讀取,我們這里模擬了          
       if (type2 == 1) {          
           //return F3A_File_Factory.getDepDAO();          
       } else if (type2 == 2) {          
           //return F3A_ODB_Factory.getDepDAO();          
       } else if (type2 == 3) {          
           return F3A_RDB_Factory.getDepDAO();          
       }else if (type2 == 4) {          
           //return F3A_XML_Factory.getDepDAO();          
       }          
       return null;          
   }          
}          
1
2
3
4
5
6
7
8
9
10
11
package cn.hncu.pattern.dao.impl.b.factory;          
import cn.hncu.pattern.dao.dao.DepDAO;          
public class F2BFactory {          
   private F2BFactory(){          
   }          
   public static DepDAO getDepDAO(){          
       return null;          
   }          
}          

  第三層dao

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package cn.hncu.pattern.dao.impl.a.rdb.factory;          
import cn.hncu.pattern.dao.dao.DepDAO;          
import cn.hncu.pattern.dao.impl.a.rdb.oracle.factory.F4A_RDB_Oracle_Factory;          
public class F3A_RDB_Factory {          
   private F3A_RDB_Factory(){          
   }          
   public static DepDAO getDepDAO(){          
       int type3 = 2;// 第3層工廠(chǎng)的選擇類(lèi)型,按理應該從用戶(hù)的配置信息中讀取,我們這里模擬了          
       if(type3==1){          
           //return F4A_RDB_MySQL_Factory.getDepDAO();          
       }else if(type3==2){          
           return F4A_RDB_Oracle_Factory.getDepDAO();          
       }else if(type3==3){          
           //return F4A_RDB_XML_Factory.getDepDAO();          
       }          
                 
       return null;          
   }          
}          

  第四層dao

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package cn.hncu.pattern.dao.impl.a.rdb.oracle.factory;          
import cn.hncu.pattern.dao.dao.DepDAO;          
import cn.hncu.pattern.dao.impl.a.rdb.oracle.ejb.DepEjbImpl;          
import cn.hncu.pattern.dao.impl.a.rdb.oracle.hibernate.DepHibernateImpl;          
import cn.hncu.pattern.dao.impl.a.rdb.oracle.jdbc.DepJdbcImpl;          
import cn.hncu.pattern.dao.impl.a.rdb.oracle.jpa.DepJpaImpl;          
public class F4A_RDB_Oracle_Factory {          
   private F4A_RDB_Oracle_Factory(){          
   }          
   public static DepDAO getDepDAO(){          
       int type4 = 1;// 第4層工廠(chǎng)的選擇類(lèi)型,按理應該從用戶(hù)的配置信息中讀取,我們這里模擬了          
                 
       if(type4==1){          
           return new DepEjbImpl();          
       }else if(type4==2){          
           return new DepHibernateImpl();          
       }else if(type4==3){          
           return new DepJdbcImpl();          
       }else if(type4==4){          
           return new DepJpaImpl();          
       }          
                 
       return null;          
   }          
}          

  實(shí)現類(lèi):

1
2
3
4
5
6
7
8
9
10
package cn.hncu.pattern.dao.impl.a.rdb.oracle.ejb;          
import cn.hncu.pattern.dao.dao.DepDAO;          
public class DepEjbImpl implements DepDAO{          
   @Override          
   public void create(String userId, String name) {          
       System.out.println("利用DepEjbImpl向數據庫寫(xiě)入:"+userId+","+name);          
   }          
}          
1
2
3
4
5
6
7
8
9
10
package cn.hncu.pattern.dao.impl.a.rdb.oracle.hibernate;          
import cn.hncu.pattern.dao.dao.DepDAO;          
public class DepHibernateImpl implements DepDAO{          
   @Override          
   public void create(String userId, String name) {          
       System.out.println("利用DepHibernateImpl向數據庫寫(xiě)入:"+userId+","+name);          
   }          
}          
1
2
3
4
5
6
7
8
9
10
package cn.hncu.pattern.dao.impl.a.rdb.oracle.jdbc;          
import cn.hncu.pattern.dao.dao.DepDAO;          
public class DepJdbcImpl implements DepDAO{          
   @Override          
   public void create(String userId, String name) {          
       System.out.println("利用DepJdbcImpl向數據庫寫(xiě)入:"+userId+","+name);          
   }          
}          
1
2
3
4
5
6
7
8
9
10
package cn.hncu.pattern.dao.impl.a.rdb.oracle.jpa;          
import cn.hncu.pattern.dao.dao.DepDAO;          
public class DepJpaImpl implements DepDAO{          
   @Override          
   public void create(String userId, String name) {          
       System.out.println("利用DepJpaImpl向數據庫寫(xiě)入:"+userId+","+name);          
   }          
}          

  測試:

1
2
3
4
5
6
7
8
9
10
11
12
package cn.hncu.pattern.dao;          
import cn.hncu.pattern.dao.dao.DepDAO;          
import cn.hncu.pattern.dao.factory.F1Factory;          
//本類(lèi)是dao層的用戶(hù),相當于邏輯層          
public class Client {          
   public static void main(String[] args) {          
       DepDAO dao = F1Factory.getDepDAO();          
       dao.create("1001", "Jack");          
   }          
}          

  測試結果:

1
利用DepEjbImpl向數據庫寫(xiě)入:1001,Jack          

【java設計模式:DAO模式】相關(guān)文章:

PHP和DAO設計模式11-11

java設計模式:多例模式08-12

java設計模式:裝飾模式07-08

java設計模式:工廠(chǎng)模式11-07

JAVA設計模式之單例模式07-29

Java單例設計模式09-27

解析Java的設計模式編程之解釋器模式的運用05-19

Java的設計模式編程中責任鏈模式的運用的實(shí)例講解07-07

Java的結構型模式07-09

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看