MVC:模型--视图--控制器,一种Web应用程序设计模式,用一种业务逻辑、数据、视图显示分离设计的代码组织方式。
Model(模型逻辑):运用程序中用于处理运用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。
View(视图逻辑):运用程序中用于处理数据视图显示的部分,通常视图依赖模型数据创建的。
Controller(控制逻辑):运用程序中处理用户交互的部分,通常控制器通过视图读取数据,控制用户输入,然后传输给模型对象再到视图界面。
MVC分层有助于管理复杂的运用程序,可以在一个时间内专门专注于一个方面的开发,不同的开发人员同时进行不同模块的开发,增加软件开发的进度。例如,你可以在不依赖业务逻辑的情况下专注于视图界面的设计。同时也可以让运用程序的测试变的更加容易。
优点:
1、耦合性低:
视图层和业务层分离,在修改视图代码的时候而不影响业务层逻辑、功能;同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2、重用性高:
MVC模型允许多个视图来共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3、生命周期成本低:
MVC使开发和维护用户接口的技术含量降低。
4、部署快:
使用MVC模式极大的缩短了开发的时间,这样开发人员可以把重心放在业务逻辑层的开发。
5、可维护性高:
视图层和业务层的分离使得WEB运用程序的维护和修改变得更加容易。
6、有利于软甲工程化管理:
由于不同的逻辑层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。控制器也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
缺点:
1、没有明确的定义:
MVC内部的结构十分复杂,定义不是很明确,在使用的时候需要精心的设计。
2、不适合中小性项目的开发:
花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
3、增加系统的结构和实现的复杂性:
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
4、 视图和控制器之间联系过于密切:
视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
5、视图对于模型数据的低效访问:
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
6、一把高级的界面工具和构造器不支持:
改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,会造成MVC使用的困难。