MVC全名是Model View Controller,即模型-视图-控制器的缩写,一种软件设计典范,用一种业务逻辑,数据,界面显示分离方法组织代码,
将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
Model :表示应用程序核心,企业数据和业务规则(数据库记录列表)。是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据
在MVC的三个部件中,模型拥有最多的处理任务,由于应用模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
View:是用户看到并与之交互的界面,显示数据(数据库记录)。是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的,MVC好处是它能为应用程序处理很多不同的视图。在视图中并没有真正的处理发生
Controller:处理输入(写入数据库记录)。是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。
它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定调用哪个视图来显示返回的数据
MVC分层有助于管理复杂的应用程序,同时也简化了分组开发。最典型的MVC就是JSP+serviet+javabean的模式
特点1:耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程
或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则
特点2:重用性高
MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,所以同样的构件能被不同的界面使用。
特点3:生命周期成本低
MVC使开发和维护用户接口的技术含量降低。
特点4:可维护性高
分离视图层和业务逻辑层也使得web应用更易于维护和修改。
MVC和C++编程中典型的三层架构之间的区别
三层架构是UI(界面)-BLL(业务处理)-DAL(数据处理);MVC即Model-View-Control,
共同点:三层架构的UI层相当于MVC中的View,
区别:三层架构中的BLL和DAL层相当于MVC中的Model层,Model层实现系统中的业务逻辑,当然也包括了数据访问的逻辑,
区别比较大的是三层架构中没有Control层,而是由单个界面上的控件直接处理页面于业务逻辑之间的关系,
MVC中的control层是作为联系视图层和模型层的纽带,使得整个项目的结构更加清晰,降低了耦合性。
MVC模式为什么并不是一种设计模式?
Gof(Gang of Four),四人组,《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、
Richard Helm、Ralph Johnson、John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实
是其他三个经典的设计模式的演变:观察者模式,策略模式和组合模式。根据MVC在框架中的实现不同可能还会用到工厂模式和装饰器模式