1. 程式人生 > 實用技巧 >【轉】Java 服務端 和 C# 客戶端 實現 Socket 通訊

【轉】Java 服務端 和 C# 客戶端 實現 Socket 通訊

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);
		}

	}

}

執行結果:

好處:DAO模式作為與資料庫打交道的東西,他只關注怎麼將資料寫入資料庫,和怎麼取出來;隔離了資料訪問程式碼和業務邏輯程式碼;業務邏輯程式碼直接呼叫DAO方法即可,分工明確,資料訪問層程式碼變化不影響業務邏輯程式碼,這符合單一職能原則,降低了藕合性,提高了可複用性。