设计模式——MVC模式

参考教程:MVC 模式 | 菜鸟教程

一、概念

MVC 模式代表 Model-View-Controller 模式。
Model:代表一个存取数据的对象,也可以带有逻辑,在数据变化时通知 Controller。
View:负责数据的可视化。
Controller:作用于 Model 和 Controller ,控制数据流向 Model,在数据发生变化时更新 View。

二、实现

使用 Python 实现 MVC 模式,类图如下。其中 Model 为 Student 类,Controller 和 View 分别为两个类。


MVC 类图

使用 Python 实现上面的设计,代码如下。
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()
        
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。