使用框架的初衷
编程有一个准则Don‘t Repeat Yourself(不要重复你的代码)。如果有一些代码出现重复,我们就应该把这些代码提取出来封装成一个方法。随着时间的积累有了一批方法,我们把它整合成工具类。工具类如果形成规模,可以把工具类整合成类库。类库更系统功能更全。不仅不要自己重复造项目中已有的轮子,也不要造别人已经造好的轮子。我们只需要直接使用已有的轮子就行。
框架也是一样,框架,是为了我们不必总是写相同代码而诞生的。框架,是为了让我们专注于业务逻辑而诞生的。框架,把我们程序设计中不变的部分抽取出来,让我们专注于与业务有关的代码。
MVC框架的诞生
同样的代码写两次就是罪过,所以我们需要什么东西来让我们解放出来。很快人们就发展出了一套MVC框架.
模型-视图-控制器架构模式背后的思想非常简单:我们的应用程序中必须区分下面这些职责:
应用程序被分成了三个主要的部分,每个部分负责掌管不同的任务。下面让我们看看详细的解释以及一个例子。
控制器
控制器掌管着用户的请求(当用户点击图形用户界面(GUI)上的元素执行操作时,控制器会收到HTTP GET或者POST请求)。它的主要功能就是调用并协调需要的资源/对象来执行用户请求。通常控制器会为任务调用合适的模型,以及选择合适的视图。
模型
模型是指运用于数据之上的数据规则和数据内容,它一般对应于应用程序所要管理的对象。在软件系统中,任何事物都可以被抽象成可以对其以某种方式进行处理的数据模型。
MVC框架能帮我们做什么?
框架规定了开发者写哪些代码/不写哪些代码,怎么写代码——这就是框架主要解决的问题。MVC框架实现了MVC模式。什么意思?意思是只要你根据框架的要求填充代码,你就能够很简单的实现MVC模式。
谁来响应用户请求?框架会告诉你
谁负责生成响应界面?框架会告诉你
如何匹配网址?框架会告诉你
如何接受参数?框架会告诉你,
如何与视图交互?框架会告诉你
MVC的好处是什么
我们使用MVC的一个最明显好处就是它将视图展示和应用逻辑清晰的分离开来。对不同用户以及不同设备类型的支持一直是当下的一个常见问题。来自台式电脑和手机的请求所得到的视图应该是不相同的。模型会返回完全相同的数据,但是不同的地方是控制器会选择使用的视图文件来展示数据(我们可以把它看作是不同的模板)。除了将视图从业务逻辑中分离开外,MVC的分离也降低了大型应用设计的难度。代码也更具结构性,因此也更容易维护,测试和重用。这种模式会帮助我们清晰的区分程序各部分的职责,便于程序维护,代码重用以及测试。MVC框架给我们提供了一个基本的MVC骨架,以及许多有用的功能,提高了我们的效率,让开发过程更加轻松。
使用框架的必要性
需要指出的是,只有在相当规模的程序中应用这些框架才能体会到好处。
如果你的网站、程序很小,那么没有必要杀鸡用牛刀。
不建议新手一开始就使用框架,因为你不知道框架帮你做了什么,而这不利于个人的成长。在学习阶段,先试试不用框架我该如何做,然后就会更明白框架的价值。
框架和类库的区别
框架和类库的主要区别是一是控制反转,一般程序,程序的运作是由程序员全盘掌握的。程序资源的初始化、销毁、定位查找,执行逻辑都是我们写代码实现的。这些顺着程序主入口开始查找都可以找得到。但是应用框架后的控制权已经交给了框架。比如配置框架参数时已经控制权移交给框架的控制器。
二是框架会告诉你还缺什么,你只需要把这些代码写完,程序就可以正常运行了。类库实现的代码你无需再写,但是类库没告诉你,程序员需要写哪些代码,需要程序员自己心理有数。
MVC的缺点
由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。您将不得不花费相当可观的时间去考虑如何将MVC运用到您的应用程序,同时由于模型和视图要严格地分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果您要隔离模型、视图和控制器的构件,您可能需要重新思考您的应用程序,尤其是应用程序的构架方面。如果您肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使您的软件在健壮性、代码重用和结构方面上一个新的台阶。