Giới thiệu về mô hình MVC, ví dụ sử dụng ngôn ngữ Python

MVC là gì?

MVC là cách thiết kế ứng dụng thành  các phần với các chức năng riêng biệt.

MVCinAction

Lịch sử của MVC

MVC là  viết tắt của Model-View-Controller. MVC được mô tả đầu tiên bởi  Trygve_Reenskaug  vào năm 1979. Tuy đã hơn 30 năm qua, nhưng khái niệm này không những bị lãng quên,… ngày nay, nó được dùng vào hầu hết các web framework và GUI framework, gồm có:

  • Ruby On Rails: Một web-framework viết trên Ruby rất thịnh hành.
  • Apple Cocoa: Apple’s framework cho phát triển các ứng dụng Mac OS và iOS.
  • ASP.Net Framework: Microsoft’s web-framework để phát triển các ứng dụng web trên .NET.
  • Apache Struts: Một Java web-framework rất phổ biến
  • … và rất nhiều framework khác.

Các thành phần trong MVC

Model-View-Controller theo đúng như  tên gọi của nó, được chia  thành 3 phần chính:

Model: Kết nối với cơ sở dữ liệu và thực hiện các tương tác với cơ sở dữ liệu

View: Hiển thị trên giao diện(UI) các kiểu dữ liệu đó.

Controller: Nhận các tương tác của người dùng, điều hướng, gọi các hành vi từ Model và hiển thị lên View tương ứng.

Tuy rằng chưa có mẫu chuẩn MVC, nhưng các framework áp dụng MVC cũng không khác nhau nhiều. Các framework này đều cố gắng đạt được:

  • Tách lớp trình diễn (Presentation) với lớp thao tác dữ liệu (Model)
  • Tách lớp điều hướng(Controller) với lớp hiển thị (View)

Ví dụ sử dụng MVC trong Python


import sqlite3
class MVCModel:
def request(self, id):
# Would query database…
conn = sqlite3.connect('querydb')
c = conn.cursor()
results = c.execute('''select name from data where id = %d''' %id)
conn.commit()
c.close()
for row in results:
name = row[0]
return { "id" : id, "name": name}
class MVCController:
def __init__(self):
self.model = MVCModel()
self.view = MVCView()
def main(self):
post = self.model.request(1)
self.view.show(post)
class MVCView:
def show(self, post):
print "%(id)s %(name)s" % post
Controller = MVCController()
Controller.main()

view raw

gistfile1.py

hosted with ❤ by GitHub

Bình luận về bài viết này