数据访问对象模式
1.数据访问对象模式简介
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。以下是数
据访问对象模式的参与者。
数据访问对象接口(Data Access Object Interface):该接口定义了在一个模型对象上要执行的标准操作。
数据访问对象实体类(Data Access Object concrete class):该类实现了上述的接口。该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者是其他的存储机制。
模型对象/数值对象(Model Object/Value Object):该对象是简单的 POJO,包含了 get/set 方法来存储通过使用 DAO 类检索到的数据。
2.示例Demo
import java.util.List; import java.util.ArrayList; interface StudentDao { List<Student> getAllStudents(); void deleteStudent(int number); void updateStudent(int number, String name); void addStudent(Student student); } class StudentDaoImpl implements StudentDao { private List<Student> lists = new ArrayList<Student>(); public List<Student> getAllStudents() { return lists; } public void deleteStudent(int number) { for (Student stu : lists) { if (stu.getNumber() == number) { /*注意java中删除链表中元素是remove而不是delete*/ lists.remove(stu); System.out.println("Delete student: name = " + stu.getName() + " number = " + stu.getNumber()); } } } public void updateStudent(int number, String name) { for (Student stu : lists) { if (stu.getNumber() == number) { /*注意换行时“+”要写在一行的最前面而不是上一行的后面,不能使用连接符"\"*/ System.out.println("Update student from: name = " + stu.getName() + " number = " + stu.getNumber() + " to: name = " + name + " number = " + number); stu.setName(name); } } } public void addStudent(Student student) { lists.add(student); System.out.println("Add student: name = " + student.getName() + " number = " + student.getNumber()); } } class Student { private String name; private int number; public Student(String name, int number) { this.name = name; this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } } public class DaoPatternDemo { public static void main(String args[]) { StudentDao dao = createStudentDao(); dao.updateStudent(2, "kitty"); System.out.println("All students are:"); for (Student stu : dao.getAllStudents()) { System.out.println("name = " + stu.getName() + " number = " + stu.getNumber()); } } public static StudentDao createStudentDao() { StudentDao dao = new StudentDaoImpl(); dao.addStudent(new Student("James", 1)); dao.addStudent(new Student("jane", 2)); dao.addStudent(new Student("lucy", 3)); return dao; } }
参考:http://www.runoob.com/design-pattern/data-access-object-pattern.html
posted on 2019-04-21 18:18 Hello-World3 阅读(118) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!