Java工厂设计模式 Java抽象工厂模式 Java单例模式 Java建造者(Builder)模式 Java原型模式 Java适配器模式 Java桥接模式 Java过滤器模式(条件模式) Java组合模式 Java装饰模式 Java门面模式(或外观模式) Java享元模式(Flyweight Pattern) Java责任链模式 Java命令模式 Java迭代器模式 Java中介者模式(Mediator Pattern) Java解释器模式 Java备忘录模式 Java观察者模式 Java状态模式 Java空对象模式 Java策略模式 Java模板模式 Java访问者模式 Java MVC模式 Java业务代理模式 Java组合实体模式 Java数据访问对象模式 Java前端控制器模式 Java拦截过滤器模式 Java服务定位器模式 Java传输对象模式 Java设计模式之中介者模式(Mediator Pattern)简介 Java设计模式之命令模式(Command模式)介绍 Java设计模式之访问模式(Visitor者模式)介绍 Java设计模式之观察者模式(Observer模式)介绍 Java设计模式之状态模式(State模式)介绍 Java设计模式之策略模式(Strategy模式)介绍 Java设计模式之解释器模式(Interpreter模式)介绍 Java设计模式之中介模式(Mediator模式)介绍 Java设计模式之备忘录模式(Memento模式)介绍 Java设计模式之责任链模式(Chain of Responsibility模式)介绍 Java设计模式之模板模式(Template模式)介绍 Java设计模式之迭代模式(Iterator模式)介绍 Java设计模式之外观模式(Facade模式)介绍 Java设计模式之代理模式(Proxy模式)介绍 Java设计模式之适配器模式(Adapter模式)介绍 Java设计模式之组合模式(Composite模式)介绍 Java设计模式之装饰模式(Decorator模式)介绍 Java设计模式之桥模式(Bridge模式)介绍 Java设计模式之共享模式/享元模式(Flyweight模式)介绍 Java设计模式之原型模式(Prototype模式)介绍 Java设计模式之建造者模式(Builder模式)介绍 Java设计模式之单态模式(Singleton模式)介绍 Java设计模式之工厂模式(Factory模式)介绍

数据访问对象模式或DAO模式用于将低级数据访问API或操作与高级业务服务分离。 以下是数据访问对象模式的参与者。

  • 数据访问对象接口 - 此接口定义要对模型对象执行的标准操作。
  • 数据访问对象具体类 - 此类实现上述接口。 这个类负责从数据源获取数据,数据源可以是数据库/xml或任何其他存储机制。
  • 模型对象或值对象 - 此对象是简单的POJO,包含用于存储使用DAO类检索的数据的get/set方法。

实现实例

在这个将创建一个作为ModelValue对象的Student对象。 StudentDao是数据访问对象接口。 StudentDaoImpl是实现数据访问对象接口的具体类。 DaoPatternDemo这是一个演示类,将使用StudentDao演示使用数据访问对象模式。

数据访问对象模式示例的结构如下图所示 -

第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 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 is working as a database     List students;       public StudentDaoImpl(){        students = new ArrayList();        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");     }       //retrive list of students from the database     @Override     public List 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演示数据访问对象模式的使用。
DaoPatternDemo.java

public class DaoPatternDemo {     public static void main(String[] args) {        StudentDao studentDao = new StudentDaoImpl();          //print all students        for (Student student : studentDao.getAllStudents()) {           System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");        }            //update student        Student student =studentDao.getAllStudents().get(0);        student.setName("Michael");        studentDao.updateStudent(student);          //get the 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 ]  

本文属作者原创,转载请注明出处:易百教程 » Java数据访问对象模式

242阅读 | 0评论
你的回应
联系我们