Mẫu bộ điều khiển chế độ xem mô hình
Model View Controller là mẫu thiết kế được sử dụng phổ biến nhất. Các nhà phát triển cảm thấy dễ dàng thực hiện mẫu thiết kế này.
Sau đây là kiến trúc cơ bản của Bộ điều khiển Chế độ xem Mô hình:
Bây giờ chúng ta hãy xem cấu trúc hoạt động như thế nào.
Mô hình
Nó bao gồm logic ứng dụng thuần túy, tương tác với cơ sở dữ liệu. Nó bao gồm tất cả thông tin để trình bày dữ liệu cho người dùng cuối.
Lượt xem
Chế độ xem đại diện cho các tệp HTML, tương tác với người dùng cuối. Nó đại diện cho dữ liệu của mô hình cho người dùng.
Bộ điều khiển
Nó hoạt động như một trung gian giữa khung nhìn và mô hình. Nó lắng nghe các sự kiện được kích hoạt bởi chế độ xem và mô hình truy vấn cho giống nhau.
Mã Python
Chúng ta hãy xem xét một đối tượng cơ bản được gọi là “Người” và tạo một mẫu thiết kế MVC.
Model.py
import json
class Person(object):
def __init__(self, first_name = None, last_name = None):
self.first_name = first_name
self.last_name = last_name
#returns Person name, ex: John Doe
def name(self):
return ("%s %s" % (self.first_name,self.last_name))
@classmethod
#returns all people inside db.txt as list of Person objects
def getAll(self):
database = open('db.txt', 'r')
result = []
json_list = json.loads(database.read())
for item in json_list:
item = json.loads(item)
person = Person(item['first_name'], item['last_name'])
result.append(person)
return result
Nó gọi một phương thức, phương thức này tìm nạp tất cả các bản ghi của bảng Person trong cơ sở dữ liệu. Các bản ghi được trình bày ở định dạng JSON.
Lượt xem
Nó hiển thị tất cả các bản ghi được tìm nạp trong mô hình. Chế độ xem không bao giờ tương tác với mô hình; controller thực hiện công việc này (giao tiếp với model và view).
from model import Person
def showAllView(list):
print 'In our db we have %i users. Here they are:' % len(list)
for item in list:
print item.name()
def startView():
print 'MVC - the simplest example'
print 'Do you want to see everyone in my db?[y/n]'
def endView():
print 'Goodbye!'
Bộ điều khiển
Bộ điều khiển tương tác với mô hình thông qua getAll() phương thức tìm nạp tất cả các bản ghi được hiển thị cho người dùng cuối.
from model import Person
import view
def showAll():
#gets list of all Person objects
people_in_db = Person.getAll()
#calls view
return view.showAllView(people_in_db)
def start():
view.startView()
input = raw_input()
if input == 'y':
return showAll()
else:
return view.endView()
if __name__ == "__main__":
#running controller function
start()