介面——DAO模式程式碼閱讀及應用
阿新 • • 發佈:2020-10-25
1. StudenDaoListImpl.java與StudentDaoArrayImpl.java有何不同?
答:StudenDaoListImpl.java是用連結串列儲存學生資訊,StudentDaoArrayImpl.java是用陣列儲存學生資訊。
2. StudentDao.java檔案是幹什麼用的?為什麼裡面什麼實現程式碼都沒有?
答:在StudentDao.java檔案中定義了一個StudentDao介面,裡面有三個方法的宣告。介面只規定了類應該具有哪些功能,具體的功能要在實現它的類中實現。StudenDaoListImpl與StudentDaoArrayImpl就是兩個介面,main函式可以直接通過介面來呼叫其中的方法。如果StudenDaoListImpl或StudentDaoArrayImpl中的方法需要進行修改,那就直接在StudenDaoListImpl或StudentDaoArrayImpl中進行修改就好了,而main函式不需要進行修改。
3. 使用搜索引擎搜尋“Java DAO”,選出幾句你能看懂的、對你最有啟發的話。請結合介面知識去理解。
(1)DAO是Data Access Object資料訪問介面,資料訪問:故名思義就是與資料庫打交道。夾在業務邏輯與資料庫資源中間。
(2)DAO層一般有介面和該介面的實現類,介面用於規範實現類,實現類一般用於用於操作資料庫! 一般操作修改,新增,刪除資料庫操作的步驟很相似,就寫了一個公共類DAO類 ,修改,新增,刪除資料庫操作時直接呼叫公共類DAO類。
(3)優點是隔離了資料訪問程式碼和業務邏輯程式碼和隔離了不同資料庫實現。
4. 嘗試執行Test.java。根據註釋修改相應程式碼。結合參考程式碼回答使用DAO模式有什麼好處?
陣列實現:
package stumanagement; public class Test { public static void main(String[] args) { Student[] students = new Student[3]; students[0] = new Student("Tom"); students[1]= new Student("Jerry"); students[2] = new Student("Sophia"); StudentDao sdm = new StudentDaoArrayImpl(50);//使用陣列實現 //StudentDao sdm = new StudenDaoListImpl();//使用列表實現 //往後臺寫資料,無需考慮後臺是什麼(到底是資料庫、檔案、陣列、List) //因為這裡是面向StudentDao介面 System.out.println("===========寫入學生========"); for(Student e:students){ if (!sdm.addStudent(e)){ System.out.println("新增學生失敗"); }else{ System.out.println("插入成功!!"); } } System.out.println("===========顯示所有學生========"); sdm.diplayAllStudents(); System.out.println("===========查詢學生========"); Student temp = sdm.getStuByName("Tom") ; if(temp == null){ System.out.println("查無此人"); }else{ System.out.println(temp); } } }
連結串列實現:
package stumanagement;
public class Test {
public static void main(String[] args) {
Student[] students = new Student[3];
students[0] = new Student("Tom");
students[1]= new Student("Jerry");
students[2] = new Student("Sophia");
//StudentDao sdm = new StudentDaoArrayImpl(50);//使用陣列實現
StudentDao sdm = new StudenDaoListImpl();//使用列表實現
//往後臺寫資料,無需考慮後臺是什麼(到底是資料庫、檔案、陣列、List)
//因為這裡是面向StudentDao介面
System.out.println("===========寫入學生========");
for(Student e:students){
if (!sdm.addStudent(e)){
System.out.println("新增學生失敗");
}else{
System.out.println("插入成功!!");
}
}
System.out.println("===========顯示所有學生========");
sdm.diplayAllStudents();
System.out.println("===========查詢學生========");
Student temp = sdm.getStuByName("Tom") ;
if(temp == null){
System.out.println("查無此人");
}else{
System.out.println(temp);
}
}
}
好處:修改時只要修改DAO的訪問模式,不再需要在資料庫中建立表之間的複雜聯絡,使得業務物件之間的關係和資料庫相分離,簡化了資料庫的建立和維護。