|
| 1 | +# -*- coding: utf-8 -*- |
| 2 | +# @Author : ydf |
| 3 | +# @Time : 2019/10/9 0009 15:32 |
| 4 | + |
| 5 | +""" |
| 6 | +前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。 |
| 7 | +
|
| 8 | +前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。 |
| 9 | +调度器(Dispatcher) - 前端控制器可能使用一个调度器对象来调度请求到相应的具体处理程序。 |
| 10 | +视图(View) - 视图是为请求而创建的对象。 |
| 11 | +
|
| 12 | +从java转化来,命名规范懒得改了。 |
| 13 | +""" |
| 14 | +from abc import ABCMeta, abstractmethod |
| 15 | +from monkey_print2 import print |
| 16 | + |
| 17 | + |
| 18 | +class Student: |
| 19 | + def __init__(self, name, roll_no): |
| 20 | + self.__name = name |
| 21 | + self.__roll_no = roll_no |
| 22 | + |
| 23 | + def get_name(self): |
| 24 | + return self.__name |
| 25 | + |
| 26 | + def set_name(self, name): |
| 27 | + self.__name = name |
| 28 | + |
| 29 | + def get_roll_no(self): |
| 30 | + return self.__roll_no |
| 31 | + |
| 32 | + def set_roll_no(self, roll_no): |
| 33 | + self.__roll_no = roll_no |
| 34 | + |
| 35 | + |
| 36 | +class AbstractStudentDao(metaclass=ABCMeta): |
| 37 | + @abstractmethod |
| 38 | + def get_all_students(self): |
| 39 | + pass |
| 40 | + |
| 41 | + def get_student(self, roll_num): |
| 42 | + pass |
| 43 | + |
| 44 | + def update_student(self, student: Student): |
| 45 | + pass |
| 46 | + |
| 47 | + def delete_student(self, student: Student): |
| 48 | + pass |
| 49 | + |
| 50 | + |
| 51 | +class StudentDao(AbstractStudentDao): |
| 52 | + def __init__(self): |
| 53 | + self.students = [] |
| 54 | + student1 = Student("小明", 0) |
| 55 | + student2 = Student("小黄", 1) |
| 56 | + self.students.append(student1) |
| 57 | + self.students.append(student2) |
| 58 | + |
| 59 | + def get_all_students(self): |
| 60 | + return self.students |
| 61 | + |
| 62 | + def get_student(self, roll_num): |
| 63 | + return self.students[roll_num] |
| 64 | + |
| 65 | + def update_student(self, student: Student): |
| 66 | + # print(student.get_roll_no()) |
| 67 | + # print(student.get_name()) |
| 68 | + self.students[student.get_roll_no()].set_name(student.get_name()) |
| 69 | + print("Student: RollNo " + str(student.get_roll_no()) |
| 70 | + + ", updated in the database") |
| 71 | + |
| 72 | + def delete_student(self, student: Student): |
| 73 | + self.students.pop(student.get_roll_no()) |
| 74 | + print("Student: Roll No " + str(student.get_roll_no()) |
| 75 | + + ", deleted from database") |
| 76 | + |
| 77 | + |
| 78 | +if __name__ == '__main__': |
| 79 | + |
| 80 | + student_dao = StudentDao() |
| 81 | + |
| 82 | + # // 输出所有的学生 |
| 83 | + for student in student_dao.get_all_students(): |
| 84 | + print("Student: [RollNo : " + str(student.get_roll_no()) + ", Name : " + student.get_name() + " ]") |
| 85 | + |
| 86 | + # // 更新学生 |
| 87 | + student = student_dao.get_all_students()[0] |
| 88 | + student.set_name("Michael") |
| 89 | + student_dao.update_student(student) |
| 90 | + |
| 91 | + # // 获取学生 |
| 92 | + student_dao.get_student(0) |
| 93 | + print("Student: [RollNo : " |
| 94 | + + str(student.get_roll_no()) + ", Name : " + student.get_name() + " ]") |
| 95 | + |
| 96 | + """ |
| 97 | + "D:/coding2/python36patterns/j2ee模式-数据访问对象模式.py:84" 17:38:06 Student: [RollNo : 0, Name : 小明 ] |
| 98 | +"D:/coding2/python36patterns/j2ee模式-数据访问对象模式.py:84" 17:38:06 Student: [RollNo : 1, Name : 小黄 ] |
| 99 | +"D:/coding2/python36patterns/j2ee模式-数据访问对象模式.py:70" 17:38:06 Student: RollNo 0, updated in the database |
| 100 | +"D:/coding2/python36patterns/j2ee模式-数据访问对象模式.py:94" 17:38:06 Student: [RollNo : 0, Name : Michael ] |
| 101 | + """ |
0 commit comments