1. 程式人生 > 實用技巧 >5-互評-OO之介面-DAO模式程式碼閱讀及應用.xls

5-互評-OO之介面-DAO模式程式碼閱讀及應用.xls

1. StudenDaoListImpl.java與StudentDaoArrayImpl.java有何不同?

答:StudenDaoListImpl通過連結串列List,實現操作,儲存學生資訊;StudentDaoArrayImpl通過陣列實現操作,儲存學生資訊。兩者都是儲存學生資訊,方法不同。StudenDaoListImpl不需要設定學生個數,StudentDaoArrayImpl需要提前知道學生個數。

2. StudentDao.java檔案是幹什麼用的?為什麼裡面什麼實現程式碼都沒有?

答:StudentDao.java檔案是定義介面,在其他的類中實現。編寫介面的方式和類很相似,但介面並不是類,屬於不同的概念,類描述物件的屬性和方法,介面則包含類要實現的方法,且介面中的方法都是公有的。

3. 使用搜索引擎搜尋“Java DAO”,選出幾句你能看懂的、對你最有啟發的話。請結合介面知識去理解。

一個典型的DAO 模式主要由以下幾部分組成。

1、DAO介面: 把對資料庫的所有操作定義成抽象方法,可以提供多種實現。
2、DAO 實現類: 針對不同資料庫給出DAO介面定義方法的具體實現。
3、實體類:用於存放與傳輸物件資料。
4、資料庫連線和關閉工具類: 避免了資料庫連線和關閉程式碼的重複使用,方便修改。

DAO模式的作用

1隔離業務邏輯程式碼和資料訪問程式碼
2.隔離不同資料庫的實現

DAO模式的組成部分

DAO介面
DAO實現類
實體類
資料庫連線和關閉工具類

理解:

DAO模式通俗來講,就是將資料庫操作都封裝起來。外界呼叫方法時只知道方法功能但不能知道具體程式碼與細節和資料的儲存處理,將兩者分開,保證了程式碼的保密性和安全性。

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模式優點:

1.只要修改資料訪問方式就可以在不同介面上使用,例如Test檔案中對學生資訊的儲存,使用了連結串列與陣列的便捷轉換。
2.DAO模式將業務邏輯層和資料處理層分開,對於一個大型專案,DAO模式下可以很方便對程式碼優化,資料庫的修改只要修改DAO層的訪問方式就可以了,方便後期的維護和修改。