Leetcode 25 Reverse Nodes in k-Group
阿新 • • 發佈:2020-10-25
1. StudenDaoListImpl.java與StudentDaoArrayImpl.java有何不同?
答:StudenDaoListImpl.java是列表來儲存學生的基本資訊,而StudentDaoArrayImpl.java是用
陣列來儲存學生的基本資訊,但基本操作有所不同。tudentDaoArrayImpl.java實現getStuByName和
addStudent的方法時要判斷student是否位為null的情況,而StudenDaoListImpl.java則不需要。
2. StudentDao.java檔案是幹什麼用的?為什麼裡面什麼實現程式碼都沒有?
答:StudentDao.java定義了StudentDao介面,裡面有對學生的資訊處理的三個方法,因為實現的方法可以在其他類中實現。
這裡進行了三個方法的宣告。
3. 使用搜索引擎搜尋“Java DAO”,選出幾句你能看懂的、對你最有啟發的話。請結合介面知識去理解。
句子:DAO隔離業務邏輯程式碼和資料訪問程式碼。
答:因為DAO模式將程式碼塊分為資料儲存部分和資料訪問部分兩大塊。DAO介面中有對資料處理相關方法的宣告。而實現的程式碼中不在
介面中出現,有利於資料的封裝,也有利於程式碼的修改。
4. 嘗試執行Test.java。根據註釋修改相應程式碼。結合參考程式碼回答使用DAO模式有什麼好處?
1.陣列實現:
package com.Hellow.java; 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) 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); } } }
執行截圖:
2:連結串列實現
package com.Hellow.java; 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); } } }
執行截圖:
優點1:
將業務邏輯於資料的具體訪問相分離,可以根據後臺的資料儲存方式,定義不同的實現,比如所給出的程式碼中當後臺資料
儲存方式是陣列時用StudentDao sdm = new StudentDaoArrayImpl(50)實現,當後臺資料儲存方式是列表時。
用StudentDao sdm = new StudenDaoListImpl()實現
優點2:
如果要對程式碼修改只要修改DAO層的訪問方式就可以了,不用整個程式碼都進行修改。