谈谈MVC模式

一:简介

(一)介绍

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

(1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。

(2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。

(3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。

这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。

(二)实现举例

创建一个作为模型的 Student 对象。StudentView 是一个把学生详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView

演示类使用 StudentController 来演示 MVC 模式的用法。

二:优点

1.低耦合

通过将视图层和业务层分离,允许更改视图层代码而不必重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变,只需要改动 MVC 的模型层(及控制器)即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

模型层是自包含的,并且与控制器和视图层相分离,所以很容易改变应用程序的数据层和业务规则。一旦正确的实现了模型层,不管数据来自数据库或是服务器,视图层都将会正确的显示它们。由于运用 MVC 的应用程序的三个部件是相互独立,改变其中一个部件并不会影响其它两个,所以依据这种设计思想能构造出良好的低耦合的构件。

2.可复用性高

随着技术的不断进步,当前需要使用越来越多的方式来访问应用程序了。MVC 模式允许使用各种不同样式的视图来访问同一个服务端的代码,这得益于多个视图能共享一个模型。

比如,用户可以通过电脑或通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式(流程)是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面(视图)使用。例如,很多数据可能用 HTML 来表示,但是也有可能用 WAP 来表示,而这些表示的变化所需要的是仅仅是改变视图层的实现方式,而控制层和模型层无需做任何改变。

由于已经将数据和业务规则从表示层分开,所以可以最大化的进行代码重用了。另外,模型层也有状态管理和数据持久性处理的功能。

 

3.成本低、可维护性好

MVC 模式使开发和维护用户接口的技术含量降低。分离视图层和业务逻辑层使得 WEB 应用更易于维护和修改。

4.部署快、符合软件工程要求

使用 MVC 模式进行软件开发,使得软件开发时间得到相当大的缩减,它使后端程序员集中精力于业务逻辑,界面(前端)程序员集中精力于表现形式上。

由于不同的组件各司其职,每一层不同的应用会具有某些相同的特征,这样就有利于通过工程化、工具化的方式管理程序代码。控制器同时还提供了一个好处,就是可以使用控制器来联接不同的模型和视图,来实现用户的需求,这样控制器可以为构造应用程序提供强有力的手段。

三:缺点

1.使用困难

完全理解 MVC 模式并不是很容易的。使用 MVC 模式需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考软件的架构。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。

2.系统实现复杂

对于简单的界面来说,非要严格遵循 MVC 模式,使模型、视图与控制器分离的话,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

3.视图层的低效率访问

模型操作接口可能会有不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损失操作性能。

注:如果通过控制器访问模型层(而非视图层直接访问),或许可避免对未变化数据的不必要的频繁访问,从而解决问题。

猜你喜欢

转载自blog.csdn.net/m0_68988603/article/details/124854654
今日推荐