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

OO之介面-DAO模式程式碼閱讀及應用

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

StudentDaoListlmpl.java是用列表實現StudentDao介面,StudentDaoArrayImpl.java是用陣列實現StudentDao介面。它們的getstuByName中前者是用for(Student e:students),多用於列表。後者用的是for(int i=0; i<students.length;i++)。再者是列表可以直接使用add進行新增students.add(student)。而陣列需要找到陣列末尾的位置再插入。

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

定義介面,裡面的是方法簽名。Dao層也是資料訪問層,是一個面向物件的資料庫介面。在介面中我們知道,定義的是各個類共有的,是has-a的關係。我們只需要定義方法,也就是寫入具體的方法簽名。具體的實現是在類中實現的。

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

是一個為資料庫或其他持久化機制提供了抽象介面的物件,在不暴露底層持久化方案實現細節的前提下提供了各種資料訪問操作。

就是建立一個介面,介面中定義了此應用程式中將會用到的所有事務方法。在這個應用程式中,當需要和資料來源進行互動的時候則使用這個介面,並且編寫一個單獨的類來實現這個介面,在邏輯上該類對應一個特定的資料儲存。就如檔案中的List和Array兩種形式來儲存學生的資訊。對於這兩種儲存方式我們使用了studentDao介面,然後在StudentDaoListlmpl.java和StudentDaoArrayImpl.java中分別進行實現。

4. 嘗試執行Test.java。根據註釋修改相應程式碼。結合參考程式碼回答使用DAO模式有什麼好處?

使用列表實現:

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介面A
		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);
		}


	}

}

使用陣列實現:

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介面A
		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模式將資料訪問分為抽象層和實現層,分離了資料使用和資料訪問的底層實現細節。這樣可以在保持上層結構不變的情況下,通過更改底層實現來修改資料訪問的機制,比如只要通過修改資料訪問層實現,我們就可以部署在不同資料庫平臺上。就像檔案中的List和Array的方式,只需修改類中的方法實現就可以在不同資料庫平臺上使用。不論是檔案,陣列還是列表等等。