问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是MVC设计模式,为什么使用MVC?

发布网友 发布时间:2022-05-01 17:32

我来回答

3个回答

懂视网 时间:2022-05-10 13:33

一、代码组织(目录结构)

使用python中mvc设计模式的介绍

二、mvc概述

MVC设计模式即MVC框架。

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

三、代码

1、数据

#coding:utf-8
 
'''模拟数据,当然,这是一个元组。也可以是任意的数据库,只要你喜欢'''
 
Quotes = ('过放荡不羁的生活,容易得像顺水推舟,但是要结识良朋益友,却难如登天。 —— 巴尔扎克',
  '我读的书愈多,就愈亲近世界,愈明了生活的意义,愈觉得生活的重要。 —— 高尔基',
  '人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。 —— 刘易斯',
  '要永远觉得祖国的土地是稳固地在你脚下,要与集体一起生活,要记住,是集体教育了你。那一天你若和集体脱离,那便是末路的开始。 —— 奥斯特洛夫斯基',
  '在学校和生活中,工作的最重要的动力是工作中的乐趣,是工作获得结果时的乐趣以及对这个结果的社会价值的认识。 —— 爱因斯坦')

2、模型层
只有模型层才能够直接访问数据

#_*_coding:utf-8
from mvc.database.quote import Quotes #导入数据
 
 
class QuotesModel(object):
 '''模型层'''
 def get_quote(self,index):
 '''根据索引读取数据
 @parameter index 索引值
 '''
 try:
  valve = Quotes[index]
 except IndexError as err:
  valve = 'Not Found!'
 return valve

3、控制器层

#_*_coding:utf-8
from mvc.model.quote_model import QuotesModel
from mvc.view.quoteterminalview import QuoteTerminalView
 
class QuoteterminalController(object):
 '''控制器层'''
 def __init__(self):
 self.model = QuotesModel()
 self.view = QuoteTerminalView()
 
 def run(self):
 n = self.view.select_quote()
 try:
  index = int(n)
  quote = self.model.get_quote(index)
  self.view.show(quote)
 except ValueError as err:
  self.view.error('不合法的索引值')

4、视图层

#_*_coding:utf-8
 
class QuoteTerminalView(object):
 '''视图层'''
 def show(self, quote):
 '''显示查询结果
 @parameter quote 接收数据'''
 print('您查询到的名人名言是:%s' % (quote))
 
 def error(self, msg):
 '''打印错误消息
 @msg msg 接收错误消息'''
 print("error: %s" % (msg))
 
 def select_quote(self):
 '''读取用户的选择'''
 return raw_input("请输入编号进行查询:")

5、主程序

#_*_coding:utf-8
'''主程序'''
from mvc.controller.quoteterminalcontroller import QuoteterminalController
 
def mains():
 while True:
 controller = QuoteterminalController()
 controller.run()
 
if __name__ == '__main__':
 mains()

热心网友 时间:2022-05-10 10:41

MVC(Model-View-Controller)把系统的组成分解为M(模型)、 V(视图)、C(控制器)三种部件。视图表示数据在屏幕上的显示。控制器提供处理过程控制,它在模型和视图之间起连接作用。控制器本身不输出任何信息和做任何处理,它只负责把用户的请求转成针对Model的操作,和调用相应的视图来显示Model处理后的数据。
用户界面逻辑的更改往往比业务逻辑频繁,尤其是在基于Web的应用程序中。例如,可能添加新的用户界面页,或者可能完全打乱现有的页面布局。对显示的更改,尽可能地不要影响到数据和业务逻辑。

目前大部分Web应用都是将数据代码和表示混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用需要一些额外的工作,但它带来的好处是无庸质疑的

热心网友 时间:2022-05-10 11:59

1.各施其职,互不干涉 在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
2.有利于开发中的分工 在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
i9502联通卡放置用认准卡位 I9502,SIM1切换SIM网络上网问题 如何批量删除iphone5s通讯录 中联通信飞越JSY2000-FY(832端口)一般规格 中联通信飞越JSY2000-FY重要参数 JSY2000-FY如何设置离位转移? 特权分机如何代普通分机设置叫醒? 中联的JSY2000-FY如何用话机设置免打扰? 垂直分析法分析什么表 零基础学雅思一年多少费用 蓝牙耳机和手机怎么配对? 四川民间宴席“九斗碗”中有哪些菜品 除了蒸菜,巴蜀公社还有其它川菜吗? 川菜传统蒸菜,滑水排骨怎么做好吃! 传统夹沙肉怎么做 四川蒸菜八大碗有哪些 四川蒸菜的做法 川菜蒸菜八大碗做法 四川出名蒸菜是什么? 股票基金是哪个股票? 怎样激活12306网上购票? 华为畅想5怎么往微信朋友圈上传视频呢? 手机卡停机了微信还能用吗 用sql se3ver连上数据库后如何断开连接,我一删除连接就直接删掉整个数据库啊T T 手机号停机作废了还能正常登录微信吗 手机号不用了,还能登吗? 申请微信的手机号停用了,这个还能用吗? 我手机号不打算用,停机了,捆绑的还能登录吗? 在昆山市内乘车用乘车码刷卡可以吗? htc手机不能开机应该怎么办 什么是JAVA开发者模式!! 怎么将设计模式应用到软件设计 如何理解MVC模式还有工厂设计模式 基于mvc设计模式进行系统开发有哪些优势 python中cramjam包的安装 Python 这些软件包是干嘛的,是不是必要的?不装有什么后果? 白名单是干什么的? 梦见自己爬很大很陡的坡路马上就到打顶端了,就卡到那上不去,�� 工行个人留学贷款最高额度是多少? 为什么家里会有扑棱蛾子??? 为什么我家里飞蛾那么多啊? 家里为什么会有扑楞蛾子 家里有扑了蛾子怎么来的 家里莫名奇妙出现了很多扑棱蛾子,怎么回事呢,求解答,急急。 SQL2005,用SQL语句删除数据库提示正在使用,删除不掉,用什么语句可以关闭所有连接之后再DROP删除呢? 赤脚穿帆布鞋有什么坏处? 脚宽穿帆布鞋,怎么办 脚气穿布鞋可以吗 最近怎么有很多不认识的人通过条件查找加我是怎么回事 脚穿布鞋热伤了怎么办???