浅谈MVC架构

浅谈MVC架构

景宇庭

摘要:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在个逻辑的图形化用户界面的结构中。——《百度百科

关键词:Model View Controller业务逻辑、框架

On MVC architecture

Absrtact:The full name of MVC is model view controller, which is the abbreviation of model view controller. It is a model of software design. It uses a method of separating business logic, data and interface display to organize the code and gather the business logic into a component. While improving and customizing the interface and user interaction, it does not need to rewrite the business logic. MVC is uniquely developed to map traditional input, processing, and output functions into a logical graphical user interface structure. ——Baidu Encyclopedia

Key words:Model View Controllerbusiness logic framework

1 引言

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。 

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusionPHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

2 MVC整体介绍

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。

View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。

Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

3 MVC的优点与缺点

3.1优点

3.1.1:耦合性

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

3.1.2高重用性和可适用性

随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEBHTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。

3.1.3较低的生命周期成本

MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTMLJSP开发人员)集中精力于表现形式上。

3.1.4有利于软件工程化管理

由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。

3.2缺点

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

  视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

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

  目前,一般高级的界面工具或构造器不支持MVC架构。

  改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难

4评价

根据天极网资料显示:基于WebMVC frameworkJ2EE的世界内已是空前繁荣,TTS网站上几乎每隔一两个星期就会有新的MVC框架发布,比较好的MVC,老牌的有StrutsWebwork。新兴的MVC 框架有Spring MVCTapestryJSF等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如DinamicaVRaptor等,这些框架都提供了较好的层次分隔能力,在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。

如何选择一个好的框架应用在项目中,将会对项目的效率和可重用是至关重要的。

5总结

总的来说MVC用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。他使得一些比较简单的工程更有条理,而不至于因为功能分散,内容冗余而导致系统变得臃肿。平心而论,MVC是我这短短两年的时光中我是用最多的架构模式,他虽然不够完美,但他确实不失为我们搭建项目的好帮手

参考资料:《搜狗百科》

          《百度百科》

          《知乎》

          《一线架构师实践指南--温昱》

          《基于本体的软件密集型系统架构知识管理研究--张纯》

 

 

 

原文地址:https://www.cnblogs.com/jyt123/p/13162431.html