參考教程:MVC 模式 | 菜鳥教程
一、概念
MVC 模式代表 Model-View-Controller 模式贩虾。
Model:代表一個(gè)存取數(shù)據(jù)的對(duì)象,也可以帶有邏輯睹欲,在數(shù)據(jù)變化時(shí)通知 Controller灼舍。
View:負(fù)責(zé)數(shù)據(jù)的可視化吼和。
Controller:作用于 Model 和 Controller ,控制數(shù)據(jù)流向 Model骑素,在數(shù)據(jù)發(fā)生變化時(shí)更新 View炫乓。
二、實(shí)現(xiàn)
使用 Python 實(shí)現(xiàn) MVC 模式砂豌,類圖如下厢岂。其中 Model 為 Student 類,Controller 和 View 分別為兩個(gè)類阳距。
使用 Python 實(shí)現(xiàn)上面的設(shè)計(jì),代碼如下结借。
Student
# Student class as model
class Student():
_name = ""
_id = ""
def set_name(self, name):
self._name = name
def get_name(self):
return self._name
def set_id(self, id):
self._id = id
def get_id(self):
return self._id
# View just show the data on terminal
class StudentView():
def print_student(self, name, id):
print("Student")
print("name: {}".format(name))
print("id: {}".format(id))
# Controller update the View when module change
# make data flow to module
class StudentController():
def __init__(self, module, view):
self._module = module
self._view = view
def get_student_name(self):
return self._module._name
def set_student_name(self, name):
self._module._name = name
def get_student_id(self):
return self._module_name
def set_studetn_id(self, id):
self._module._name = id
def update_view(self):
self._view.print_student(self._module._name, self._module._id)
# Simulate fetching data from a database
def retrieve_student_from_database():
student = Student()
student.set_name("Robert")
student.set_id("10")
return student
if __name__ == '__main__':
module = retrieve_student_from_database()
view = StudentView()
controller = StudentController(module, view)
controller.update_view()
controller.set_student_name("Alice")
controller.update_view()