MVC設計模式(Model–View–Controller) - HackMD
文章推薦指數: 80 %
tags: `python` # 設計模式:MVC設計模式(Model–View–Controller) MVC介紹影片{%youtube d5ShnrandT0%} ## 設. Published LinkedwithGitHub Like1 Bookmark Subscribe ######tags:`python` #設計模式:MVC設計模式(Model–View–Controller) MVC介紹影片 {%youtubed5ShnrandT0%} ##設計模式: *在人類程式設計經歷中淬煉出來的問題解決方法(招式) *跨程式語言,任何語言都可以使用,只是寫法不同 *不同的情境適合不同的設計模式 *設計模式可以參考但不用強迫使用 *適合的設計模式可以讓程式開發更快速、更有彈性 ##MVC(Model-View-Controller)設計模式 ![](https://i.imgur.com/bfSa3tS.png) **View:**負責畫面呈現 **Controller:**負責流程、邏輯處理(商業邏輯) **Model:**負責資料庫、檔案讀寫 流程: 1.使用者操作畫面(view) 2.將使用者操作或輸入資料傳controller 3.controller根據商業邏輯處理使用者資料 4.將所需資料之要求傳給model 5.model根據需要讀寫資料庫 6.資料庫返回處理結果或取出資料 7.model回傳資料給controller 8.controller根據商業邏輯處理回傳之資料 9.將處理好之資料回傳view 10.view將資料整合後呈現給使用者觀看 優點:畫面、商業邏輯、資料處理分開處理,結構明確減少錯誤發生,也比較好除錯 --- ##實作MVC範例 {%youtube4NyCi6KRPUc%} [範例程式下載](https://drive.google.com/open?id=100P4r4DMxY0YxwzBsgT7TgFyaaXiQ0qe) :::success init.py(負責初始化設定) ```python= importlogging logging.basicConfig(level=logging.DEBUG) logging.info("載入init.py") conn=r'C:\Users\test\Desktop\test.db'#請修改成自己電腦存放路徑!! sql={ "add_user":"insertintouser(name,account,password)values('{0}','{1}','{2}')", "check_user":"select*fromuserwhereaccount='{0}'andpassword='{1}';" } ``` ::: :::success controller.py(負責系統邏輯處理) ```python= importinit,model,view defmain(): account,password=view.login() status,message,response=model.check_user(account,password) ifstatus=="success": print(""" 1.新增使用者 2.修改使用者 3.刪除使用者""") else: init.logging.info('status:'+status+'message:'+message) init.logging.info('response:'+str(response)) if__name__=='__main__': init.logging.info("執行controller.py") main() ``` ::: :::success model.py(負責資料讀寫) ```python= importsqlite3 importinit init.logging.info("載入model.py") conn=sqlite3.connect(init.conn) defcheck_user(account,password): init.logging.info("執行model.check_user()") try: response=conn.execute(init.sql['check_user'].format(account,password)).fetchone() if(response==None): status='error' message='帳號或密碼錯誤,請重新輸入' returnstatus,message,response else: status='success' message='歡迎使用本系統' returnstatus,message,response exceptExceptionase: status='error' message=e returnstatus,message,response #defadd_user(name,account,password): #init.logging.info("執行model.add_user()") #try: #conn.execute(init.sql['add_user'].format(name,account,password)) #conn.commit() #status='success' #message='成功新增使用者' #exceptExceptionase: #status='error' #message=e #returnstatus,message ``` ::: :::success view.py(負責畫面呈現) ```python= importinit init.logging.info("載入view.py") deflogin(): init.logging.info("執行view.login()") account=input("請輸入帳號:") password=input("請輸入密碼:") returnaccount,password ``` ::: ![](https://i.imgur.com/arkcn9p.png=100%x) ![](https://i.imgur.com/bRMgkIu.png=100%x) --- ##參考資料 ***Python設計模式深入解析**博碩SakisKasampalis著/江良志譯 1 × Signin Email Password Forgotpassword or Byclickingbelow,youagreetoourtermsofservice. SigninviaFacebook SigninviaTwitter SigninviaGitHub SigninviaDropbox SigninviaGoogle NewtoHackMD?Signup
延伸文章資訊
- 1MVC架構是什麼?認識Model-View-Controller 軟體設計模式
很常用的設計模式叫作MVC 設計模式,在這個架構裡,會把軟體分成Model、View、Controller 三大功能層。每一次request/response 週期的背後, ...
- 2行車記錄器與哨兵模式 - Tesla
傳送警示至和Model X 配對的手機的行動應用程式,以通知您已經觸發警報狀態。 將觸發的事件之前最新的10 分鐘短片儲存至USB 隨身碟(如果可用並已安裝)。 30 秒之後返回至 ...
- 3model - 模式 - 國家教育研究院雙語詞彙
出處/學術領域, 英文詞彙, 中文詞彙. 學術名詞 統計學名詞, model, 模型;模式. 學術名詞 教育學名詞-科教名詞, model, 模型;模式. 學術名詞 圖書館學與資訊科學名詞
- 4MVC設計模式(Model–View–Controller) - HackMD
tags: `python` # 設計模式:MVC設計模式(Model–View–Controller) MVC介紹影片{%youtube d5ShnrandT0%} ## 設.
- 5「What is your business model?」17種常見的商業模式
商業模式對於每間企業來說都是基礎中的基礎,想知道如何找出消費者痛點並加以改善,就先來了解這17種市場上常見的商業模式。|Meet創業小聚.