<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 數據訪問對象模式 數據訪問對象模式(Data Access Object Pattern)或 DAO 模式用于把低級的數據訪問 API 或操作從高級的業務服務中分離出來。以下是數據訪問對象模式的參與者。 * **數據訪問對象接口(Data Access Object Interface)** - 該接口定義了在一個模型對象上要執行的標準操作。 * **數據訪問對象實體類(Data Access Object concrete class)** - 該類實現了上述的接口。該類負責從數據源獲取數據,數據源可以是數據庫,也可以是 xml,或者是其他的存儲機制。 * **模型對象/數值對象(Model Object/Value Object)** - 該對象是簡單的 POJO,包含了 get/set 方法來存儲通過使用 DAO 類檢索到的數據。 ## 實現 我們將創建一個作為模型對象或數值對象的 _Student_ 對象。_StudentDao_ 是數據訪問對象接口。_StudentDaoImpl_ 是實現了數據訪問對象接口的實體類。_DaoPatternDemo_,我們的演示類使用 _StudentDao_ 來演示數據訪問對象模式的用法。 ![數據訪問對象模式的 UML 圖](https://box.kancloud.cn/2015-12-13_566cdfc1f3dcc.jpg) ## 步驟 1 創建數值對象。 _Student.java_ ``` public class Student { private String name; private int rollNo; Student(String name, int rollNo){ this.name = name; this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getRollNo() { return rollNo; } public void setRollNo(int rollNo) { this.rollNo = rollNo; } } ``` ## 步驟 2 創建數據訪問對象接口。 _StudentDao.java_ ``` import java.util.List; public interface StudentDao { public List<Student> getAllStudents(); public Student getStudent(int rollNo); public void updateStudent(Student student); public void deleteStudent(Student student); } ``` ## 步驟 3 創建實現了上述接口的實體類。 _StudentDaoImpl.java_ ``` import java.util.ArrayList; import java.util.List; public class StudentDaoImpl implements StudentDao { //列表是當作一個數據庫 List<Student> students; public StudentDaoImpl(){ students = new ArrayList<Student>(); Student student1 = new Student("Robert",0); Student student2 = new Student("John",1); students.add(student1); students.add(student2); } @Override public void deleteStudent(Student student) { students.remove(student.getRollNo()); System.out.println("Student: Roll No " + student.getRollNo() +", deleted from database"); } //從數據庫中檢索學生名單 @Override public List<Student> getAllStudents() { return students; } @Override public Student getStudent(int rollNo) { return students.get(rollNo); } @Override public void updateStudent(Student student) { students.get(student.getRollNo()).setName(student.getName()); System.out.println("Student: Roll No " + student.getRollNo() +", updated in the database"); } } ``` ## 步驟 4 使用 _StudentDao_ 來演示數據訪問對象模式的用法。 _CompositeEntityPatternDemo.java_ ``` public class DaoPatternDemo { public static void main(String[] args) { StudentDao studentDao = new StudentDaoImpl(); //輸出所有的學生 for (Student student : studentDao.getAllStudents()) { System.out.println("Student: [RollNo : " +student.getRollNo()+", Name : "+student.getName()+" ]"); } //更新學生 Student student =studentDao.getAllStudents().get(0); student.setName("Michael"); studentDao.updateStudent(student); //獲取學生 studentDao.getStudent(0); System.out.println("Student: [RollNo : " +student.getRollNo()+", Name : "+student.getName()+" ]"); } } ``` ## 步驟 5 驗證輸出。 ``` Student: [RollNo : 0, Name : Robert ] Student: [RollNo : 1, Name : John ] Student: Roll No 0, updated in the database Student: [RollNo : 0, Name : Michael ] ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看