Pola Pengontrol Tampilan Model
Model View Controller adalah pola desain yang paling umum digunakan. Pengembang merasa mudah menerapkan pola desain ini.
Berikut ini adalah arsitektur dasar dari Model View Controller -
Sekarang mari kita lihat bagaimana struktur itu bekerja.
Model
Ini terdiri dari logika aplikasi murni, yang berinteraksi dengan database. Ini mencakup semua informasi untuk merepresentasikan data kepada pengguna akhir.
Melihat
View mewakili file HTML, yang berinteraksi dengan pengguna akhir. Ini mewakili data model kepada pengguna.
Kontroler
Ini bertindak sebagai perantara antara tampilan dan model. Ini mendengarkan peristiwa yang dipicu oleh tampilan dan model kueri untuk hal yang sama.
Kode Python
Mari kita pertimbangkan objek dasar yang disebut "Orang" dan membuat pola desain 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
Ini memanggil metode, yang mengambil semua catatan tabel Person dalam database. Catatan disajikan dalam format JSON.
Melihat
Ini menampilkan semua catatan yang diambil dalam model. Tampilan tidak pernah berinteraksi dengan model; controller melakukan pekerjaan ini (berkomunikasi dengan model dan tampilan).
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!'
Kontroler
Kontroler berinteraksi dengan model melalui getAll() metode yang mengambil semua catatan yang ditampilkan kepada pengguna akhir.
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()