1. 程式人生 > 實用技巧 >部落格園美化——全面

部落格園美化——全面

DAO模式是介面的一個典型應用。

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

//StudenDaoListImpl.java



package stumanagement; import java.util.ArrayList; import java.util.List;
public class StudenDaoListImpl implements StudentDao { private List<Student> students = new ArrayList<Student>(); @Override
public Student getStuByName(String name) { Student temp = null; for(Student e:students){ if(e.getName().equals(name)){ temp = e; } } return temp; } @Override public boolean addStudent(Student student) { students.add(student);
return true; } @Override public void diplayAllStudents(){ for(Student e:students){ if (e != null) System.out.println(e); } } }
//StudentDaoArrayImpl.java
package stumanagement;

public class StudentDaoArrayImpl implements StudentDao {

    
private Student[] students; public StudentDaoArrayImpl(int size) { students = new Student[size]; } @Override public Student getStuByName(String name) { Student temp = null; for(int i=0; i<students.length;i++){ if(students[i]!= null){ if (students[i].getName().equals(name)){ temp = students[i]; break; } } } return temp; } @Override public boolean addStudent(Student student) { boolean success = false; for(int i=0; i<students.length;i++){ if(students[i]==null){ students[i] = student; success = true; break; } } return success; } @Override public void diplayAllStudents(){ for(Student e:students){ if (e != null) System.out.println(e); } } }

兩種java檔案都可以實現3個功能

  • getStuByName(String name) 查詢學生資訊;
  • addStudent(Student student) 新增學生;
  • diplayAllStudents() 顯示所有學生;

但是每個功能的實現方式不同,這兩個方法對於學生資料的儲存的資料結構不同。StudenDaoListImpl.java用List列表的方式儲存,StudentDaoArrayImpl.java用陣列的方式儲存。

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

//StudentDao.java


package stumanagement;

public interface StudentDao {
    public boolean addStudent(Student student);
    public Student getStuByName(String name);
    public void diplayAllStudents();
}
StudentDao.java是DAO介面,DAO介面的作用是:把對資料庫的所有操作定義成抽象方法,可以提供多種實現。因為其中方法為抽象方法,所以沒有實現程式碼。

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

參考文件:https://www.jb51.net/article/127382.htm

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

DAO模式實際上包含了兩個模式,一是Data Accessor(資料訪問器),二是Data Object(資料物件),前者要解決如何訪問資料的問題,而後者要解決的是如何用物件封裝資料。

個人理解:DAO模式就是建立一個介面,介面中定義了此應用程式中將會用到的所有事務方法,但是DAO介面不提供對這些方法的實現。當需要和資料來源進行互動的時候則使用這個介面,並且編寫一個單獨的類來實現這個介面,在邏輯上該類對應一個特定的資料儲存。

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

DAO的好處就是提供給使用者的介面只有DAO的介面,所以如果使用者想新增資料,只需要呼叫create函式即可,不需要資料庫的操作。

DAO還將介面和介面的實現類分隔開,介面用於規範實現類,實現類一般用於用於操作資料庫!

5.可選:編寫一些使用DAO模式的程式碼。比如使用檔案作為購物車儲存底層。