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()