1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ryanpenn-dart_in_action

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
39_design_pattern_dao.dart 2.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
ryanpenn Отправлено 27.03.2019 05:55 9deeecf
/**
数据访问对象模式(Data Access Object Pattern)
数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作。
数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口。该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者是其他的存储机制。
模型对象/数值对象(Model Object/Value Object) - 简单数值对象,包含了 get/set 方法来存储通过使用 DAO 类检索到的数据。
*/
main(List<String> args) {
StudentDao studentDao = new StudentDaoImpl();
//输出所有的学生
for (Student student in studentDao.getAllStudents()) {
print("Student: [RollNo : ${student.rollNo}, Name : ${student.name} ]");
}
//更新学生
Student student = studentDao.getAllStudents()[0];
student.name = "Michael";
studentDao.updateStudent(student);
//获取学生
studentDao.getStudent(0);
print("Student: [RollNo : ${student.rollNo}, Name : ${student.name} ]");
}
//////////////////////////////////////////////////////////////////
///
/// 创建数值对象
///
class Student {
int rollNo;
String name;
Student(this.name, this.rollNo);
}
///
/// 创建数据访问对象接口
///
abstract class StudentDao {
List<Student> getAllStudents();
Student getStudent(int rollNo);
void updateStudent(Student student);
void deleteStudent(Student student);
}
///
/// 创建实现了上述接口的实体类
///
class StudentDaoImpl implements StudentDao {
//列表是当作一个数据库
List<Student> _students;
StudentDaoImpl() {
_students = List<Student>();
Student student1 = Student("Robert", 0);
Student student2 = Student("John", 1);
_students.add(student1);
_students.add(student2);
}
@override
void deleteStudent(Student student) {
_students.remove(student.rollNo);
print("Student: Roll No ${student.rollNo}, deleted from database");
}
//从数据库中检索学生名单
@override
List<Student> getAllStudents() {
return _students;
}
@override
Student getStudent(int rollNo) {
return _students[rollNo];
}
@override
void updateStudent(Student student) {
_students[student.rollNo]?.name = student.name;
print("Student: Roll No ${student.rollNo}, updated in the database");
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ryanpenn-dart_in_action.git
git@api.gitlife.ru:oschina-mirror/ryanpenn-dart_in_action.git
oschina-mirror
ryanpenn-dart_in_action
ryanpenn-dart_in_action
master