MVC框架理解及优缺点

MVC框架理解及优缺点

MVC:模型(Model)、视图(View)、控制器(Control)

           流程如下:

                首先是视图向控制器发送请求,控制器再将业务请求发送给模型,

           然后模型处理请求业务并把结果返回给控制器,控制器根据结果再选择

           视图。

          MVC的优点:

               1、低耦合性:

                    视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和

                   控制器代码。同样,一个应用的业务流程或者业务规则的改变只需要改动

              MVC的模型层即可,因为模型与控制器和视图相分离,所以很容易改变应用

              程序的数据层和业务规则。

           2、高重用性和可适用性

              MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它

              包括任何WEB(HTTP)浏览器或者无线浏览器(wap),例如:例如,很多数

              据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的仅令

              是改变视图层的实现方式,而控制层和模型层无需做任何改变。

           3、较低的生命周期成本

              MVC使降低开发和维护用户接口的技术含量成为可能。

           4、快速的部署

              使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)

              集中 精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表

              现形式上

           5、可维护性

              分离视图层和业务层也使得WEB应用更便于维护和修改

           6、有利于软件工程化管理

              由于不同的层各司其职,没一层不同的应用具有某些相同的特征,有利于通过

              工程化、工具化管理程序代码。

        MVC的缺点:

                1、增加了系统结构和实现的复杂性

                2、视图与控制器间的过于紧密的连接

                3、视图对模型数据的低效率访问

                4、目前一般高级的界面工具或构造器不支持MVC模式,改造这些工具以适应

                    MVC需要和建立分离的部件的代价很高,从而造成使用MVC的困难

    缺点:

    小型项目,反而会降低开发效率,虽然层与层之间相互分离,但之间关联性太强,没有做到独立的重用。增加了系统结构和实现的复杂性。视图对模型数据的低效率访问。

================以下转载=============================

一、MVC原理 

百度百科:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
另:MVC是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。 
1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性 
2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成 
3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用 

二、MVC的优点 
1、可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 
2、视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 
3、模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 
4、潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。 

三、MVC的不足之处 
1、增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 
2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 
3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 

4、目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112514.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编写测试用例的思路_测试用例的内容

    编写测试用例的思路_测试用例的内容前言用过pytest的小伙伴都知道,pytest的运行方式是非常丰富的,可以说是你想怎么运行怎么运行,想运行哪些运行哪些,那httprunner是否同样可以呢?运行用例的各种方式运行指定路径的用

    2022年7月31日
  • 伴随矩阵求逆矩阵(已知A的伴随矩阵求A的逆矩阵)

    在之前的文章《线性代数之矩阵》中已经介绍了一些关于矩阵的基本概念,本篇文章主要就求解逆矩阵进行进一步总结。余子式(Minor)我们先看例子来直观的理解什么是余子式(Minor,后边将都用英文Minor,中文的翻译较乱)。minorexample这个例子(我们假设矩阵为A)中我们看到A[1,1]的minor就是将A[1,1]所在的行和列删除后剩下的矩阵的行列式,假设我们把A[…

    2022年4月13日
  • 安卓ExpandableListView的详细使用教程(附代码解析过程)

    安卓ExpandableListView的详细使用教程(附代码解析过程)ExpandableListView又称可扩展的ListView,它可以实现点击父项展开子项的效果,本文实现了一个比较精美的ExpandableListView。

    2022年6月30日
  • Java递归函数实例[通俗易懂]

    Java递归函数实例[通俗易懂]1.有5个人坐在一起,问第5个人多少岁?答:比第4个人大2岁,问第4个人多少岁的时候,比第3个人大2岁,问第3个人多少岁的时候,比第2个人大2岁,问第1个人多少岁的时候,第一个人说自己是8岁,那么第5个人的岁数是?用代码计算第五个人的年龄,并打印输出。publicclassDemo01{publicstaticvoidmain(String[]args){ System.out.println(“第五个人”+fu

    2022年10月24日
  • linux mail发邮件_python邮件发送

    linux mail发邮件_python邮件发送linux安装mailx发邮件文章目录linux安装mailx发邮件原理安装配置qq的smtps服务器配置Peer的证书发布者为信任​ mail命令是Linux终端发送邮件用的最多的命令。mailx是mail命令的更新版本,基于BerkeleyMail8.1,意在提供POSIXmailx命令的功能,并支持MIME、IMAP、POP3、SMTP和S/MIME扩展。mailx在某些交互特性上更加强大,如缓冲邮件消息、垃圾邮件评分和过滤等。在Linux发行版上,mail

    2022年10月20日
  • pycharm激活码2021年 豆瓣【永久激活】[通俗易懂]

    (pycharm激活码2021年 豆瓣)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsa…

    2022年3月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号