文档章节

自己对 MVC架构模式的简单理解

宜码就好
 宜码就好
发布于 2017/03/07 21:13
字数 971
阅读 25
收藏 1
mvc

MVC模式(三层架构模式)(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller) 上面那段话摘自wikipedia,是对MVC开发模式的定义,现在来谈谈怎么以MVC的架构模式开发WEB网站吧吧。

一. 模型(Model)

model 用来固化数据。封装与业务逻辑相关的数据and对数据的处理方法。模型它不关心业务是怎么实现的,它只关心数据是如何存储的。比如说,脚本语言与数据库数据交互的方法,以及封装好的sql语句。主要用php、asp、jsp之类的服务器脚本语言来实现。

** 第1层: 数据访问抽象层** 例如Metabase、PEAR:DB、PDO及ADODB等的数据库访问的抽象代码都写在model层内的代码中。增加、删除、修改等基础的方法也都封装成一个类中的各个方法。

** 第2层: DAO** DAO (Data Access Objects) 数据访问对象 是JAVA开发中的概念。说白了就是把那些SQL语句封装成一个类,把不同的SQL语句封装成一个个方法。然后需要用到SQL语言的时候就把DAO类实例化为对象,在通过调用对象中的方法来,完成对SQL语句的使用。

相关文件 userDao.php   数据库操作语言封装 DB.php   PDO相关,数据库连接

二. 控制器(Controller)

控制器起到不同层面间的组织作用,用于控制应用程序的流程。 控制器层里常常放一些业务逻辑方面的代码,一些业务方面的逻辑事件封装成一个个类中的方法,且方法中必调用第2层中的DAO对象,来完成业务逻辑方面的操作。也是用php、asp、jsp之类的服务器脚本语言来实现。

** 第3层:server** server层主要是对业务逻辑的梳理。具体的比如登陆、注册、添文章之类的基础功能事件都被分装成不同的类,不同类中的方法。创建一个叫做“用户”的类,类中写各种方法,什么注册呀,登录呀,账号密码匹配什么的统统写里面。

相关文件 userservice.php   业务逻辑的实现。。。

三. 视图(View)

视图层用来显示数据,设计、输出网页。主要使用HTML、css、js语言,以及一点点服务器脚本语言。

** 第4层:controller** controller层虽然称作controller,不过这里面的代码和控制器真的没什么关系哒。里面是一些服务器与用户数据的交互,直接调用server层里的类,并且实例化它,输出需要的数据。其实就是服务端与用户端数据的交互啦。咳咳,一般使用php来实现这个层。并且调用下面view层内的显示代码。

第5层:view view层 里放的主要就是HTML、css、js这些代码,顾名思义view嘛。另外要注意,想要服务器脚本语言输出的数据?写在view里,controller里不能输出各种奇怪的东西哦~

用MVC开发网站的好处: 好处有很多,大家可以上网查查。

  1. 代码简洁、整齐。要改个BUG什么的,找出问题后就去相应的层中直接秒改。这样就不用在一坨坨乱七八糟的代码中瞪大眼睛找具体的代码块在哪里啦。虐~
  2. 协同开发时方便呦,DBer负责写model的代码,后台程序员负责写controller代码,前端工程师负责写view层。。就这样。
  3. 代码维护方便,有事没事可以去修改修改。。

输入图片说明

© 著作权归作者所有

宜码就好
粉丝 0
博文 19
码字总数 5417
作品 0
杭州
程序员
私信 提问
谈谈UI架构设计的演化

转自:http://weibo.com/p/1001603808855434892996 了解整个由来,受益匪浅 在1979年,经典MVC模式被提出。 在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来...

文艺小青年
2017/08/10
0
0
界面之下:还原真实的 MVC、MVP、MVVM 模式

前言 做客户端开发、前端开发对MVC、MVP、MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式。网上很多文章关于这方面的讨论比较杂乱,各...

星仔小号
2016/01/14
187
0
从三层架构到MVC,MVP

本来是不想跳出来充大头蒜的,但最近发现园子里关于MVC的文章和讨论之风越刮越烈,其中有 些朋友的观点并不是我所欣赏和推荐的,同时最近也在忙着给公司里的同事做MVC方面的“扫盲工作”。 ...

15192761251
2015/11/08
0
0
我的Android重构之旅:架构篇

EF A舞蹈服 去年10月底来到了新公司,刚开始接手 Android 项目时,发现该项目真的是一团遭,项目开发上没有任何架构可言,开发人员连简单的 MVC、MVP 都不了解,Activity 及其臃肿,业务边界...

codeGoogle
2018/05/31
0
0
谈谈MVC模式

如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。 MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软件...

monroeCode
2016/12/26
3
0

没有更多内容

加载失败,请刷新页面

加载更多

URL/URI/URN的认识

这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等。但是,每次定义的时候,心里都很纠结,是该用imgUrl还...

WinkJie
23分钟前
2
0
vs2017 踩坑

好久没有使用vs2017,改了下代码,启动调试进行测试,一没有注意,就启动了。 然后 ,悲剧了,,,就有下面的问题。 VS断点提示:当前不会命中断点。还没有为该文档加载任何符号 然后百度了下,...

轻轻的走过
24分钟前
3
0
解决一个emqttd trace 无法打开的问题

emqttd这个东西做的真心不咋地,之前有emq_auth_mysql的plugin死活无法启动的问题,现在又碰到trace无法打开的问题。 查看emqttd服务器当前连接的所有client: emqttd_ctl clients list 要打...

莫在全
31分钟前
3
0
java wsdl 中不显示参数属性类型的问题解决方案

CXF3.0.1解决方案: 配合spring方式 <jaxws:endpoint id="receiveUMSMessageService" implementor="com.sw.extInterface.webservice.service.impl.ReceiveUMSMessageServiceImpl" address="......

嘿嘿嘿IT
34分钟前
2
0
go alpine docker image 搭建

Dockerfile 搭建 目录结构 --Dockerfile--main.go 写一个go的helloworld package mainimport ("fmt""log""net/http")func main() {http.HandleFunc("/", hello)err := ht......

solate
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部