【轉】Java 服務端 和 C# 客戶端 實現 Socket 通訊
阿新 • • 發佈:2020-10-23
1. StudenDaoListImpl.java與StudentDaoArrayImpl.java有何不同?
• StudenDaoListImpl.java使用連結串列來實現學生管理系統;StudentDaoArrayImpl.java使用陣列來實現學生管理系統。在查詢的過程中,因為 StudenDaoListImpl.java使用連結串列來實現,所以從頭開始直接查詢,到為空時結束,直到找到所查詢學生;StudentDaoArrayImpl.java使用陣列來實現,需遍歷陣列並判斷是否為空,不為空才能查詢。在增加學生時,StudenDaoListImpl.java直接使用add方法增加;StudentDaoArrayImpl.java先遍歷陣列,找到為空的位置增加學生資訊。
2. StudentDao.java檔案是幹什麼用的?為什麼裡面什麼實現程式碼都沒有?
• StudentDao.java檔案中定義了一個StudentDao介面,裡面有三個方法的宣告,其功能在不同的類中進行不同的編碼實現。
3. 使用搜索引擎搜尋“Java DAO”,選出幾句你能看懂的、對你最有啟發的話。請結合介面知識去理解。
• 隔離了資料訪問程式碼和業務邏輯程式碼。業務邏輯程式碼直接呼叫DAO方法即可,完全感覺不到資料庫表的存在。分工明確,資料訪問層程式碼變化不影響業務邏輯程式碼,這符合單一職能原則,降低了藕合性,提高了可複用性。
• 通過DAO介面,訪問DAO方法來解決問題,子類繼承針對出不同的資料庫可以寫出不同的內部方法,通過DAO介面訪問子類,使用子類方法,修改子類資料庫程式碼資料,不會影響到DAO介面的使用,不同資料庫對應不同的DAO方法程式碼,是的資料訪問程式碼與業務邏輯程式碼隔離。
4. 嘗試執行Test.java。根據註釋修改相應程式碼。結合參考程式碼回答使用DAO模式有什麼好處?
使用陣列實現:
package stumanagement; public class Test { public static void main(String[] args) { Student[] students = new Student[4]; students[0] = new Student("Tom"); students[1] = new Student("Jerry"); students[2] = new Student("Sophia"); students[3] = new Student("ding"); 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[4];
students[0] = new Student("Tom");
students[1] = new Student("Jerry");
students[2] = new Student("Sophia");
students[3] = new Student("ding");
//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);
}
}
}