在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 模型視圖控制器(MVC)模式
反模式
隊列
適配器設計模式
享元設計模式
Python設計模式
工廠模式
模板設計模式
構建器(Builder)設計模式
Python設計模式概要
命令設計模式
Python設計模式簡介
觀察者設計模式
代理設計模式
異常處理
責任鏈設計模式
字典實現(xiàn)
抽象工廠設計模式
Python并發(fā)(多線程)
策略設計模式
門面(Facade)設計模式
原型設計模式
迭代器設計模式
集合
單例模式
列表數(shù)據(jù)結構
狀態(tài)設計模式
模型視圖控制器(MVC)模式
裝飾器設計模式
面向對象概念的實現(xiàn)
面向對象設計模式
字符串和序列化

模型視圖控制器(MVC)模式

模型視圖控制器(MVC)是最常用的設計模式。 開發(fā)人員發(fā)現(xiàn)很容易實現(xiàn)這種設計模式。

以下是模型視圖控制器(MVC)的基本架構 -

現(xiàn)在讓我們看看這個模式結構是如何工作的。

模型(Model)

它由純粹的應用程序邏輯組成,它與數(shù)據(jù)庫交互。它包含了向最終用戶呈現(xiàn)數(shù)據(jù)的所有信息。

視圖(View)

視圖代表與最終用戶交互的HTML文件。它代表了用戶的模型數(shù)據(jù)。

控制器(Controller)

它充當視圖和模型之間的中介。它偵聽由視圖(View)和查詢模型觸發(fā)的事件。

Python代碼

下面通過一個名為“Person”的基本對象并創(chuàng)建一個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

它需要一個方法來獲取數(shù)據(jù)庫中Person表的所有記錄。記錄以JSON格式顯示。

視圖

它顯示模型中獲取的所有記錄。視圖從不與模型交互; 由控制器完成這項工作(與模型和視圖進行通信)。

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!'

控制器

控制器通過getAll()方法與模型交互,getAll()方法獲取顯示給最終用戶的所有記錄。

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

上一篇:異常處理下一篇:抽象工廠設計模式