业务模型还有一个很重要的模型,那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,需要时从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
(2)视图(View)层
视图即为用户交互界面。对于Web应用来说,可以是HTML界面,也有可能是XHTML、XML和Applet界面。随着应用复杂程度和规模的提升,界面的处理也变得越来越有挑战性。一个应用可能有很多不同的视图,MVC仅限于视图上数据的采集、处理以及用户的请求,而不包括视图上业务流程的处理。业务流程交由模型(Model)处理。比如一个订单的视图只接受来自模型的数据并进行显示,以及将用户界面的输入数据和请求传递给控制器和模型。
(3)控制器(Controller)层
控制器主要负责从用户接收请求,并将模型与视图整合在一起,共同完成相关任务。它像一个分发器,清楚地告诉开发者,可以选择什么样的模型和什么样的视图,完成什么样的用户请求。控制层本身不做任何的数据处理,例如用户点击一个链接,控制层接受请求后,并不处理业务信息,只是把用户的信息传递给模型,告诉模型做什么,然后选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图也可能对应多个模型。
2)MVC的优点
MVC要求对应用分层,虽然会增加额外的工作,但产品的结构清晰,其应用通过模型可以得到更好的体现。具体表现如下:
①具有多个视图对应一个模型的能力。在目前用户需求快速变化的情况下,可能希望通过多种方式访问应用。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,不管是哪种,对订单的处理都是一样的,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型及多个视图即可解决问题。这样既减少了代码的重复,又减少了代码的维护量,一旦模型发生改变,也易于维护。
②由于模型返回的数据不带任何显示格式,为此这些模型也可直接应用于接口。
③由于一个应用被分离为三层,因此有时仅改变其中的一层就能满足应用的变化需求。当应用的业务流程或者业务规则改变时只需改动MVC的模型层,其他两层可保持不变。
④由于控制层是把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
⑤MVC模式有利于软件工程化管理。由于不同的层各司其职,每一层的不同应用间具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
3)MVC的不足
MVC的不足体现在以下几个方面:
①增加了系统结构和实现的复杂性。对于简单的界面,如果严格遵循MVC模式,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
②视图与控制器的联系仍过于紧密。视图与控制器是既相互分离又确实联系紧密的部件,没有控制器,视图的应用会很有限,反之亦然,这样就妨碍了它们的独立重用。
③视图对模型数据的访问效率比较低。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也降低了操作性能。
……
展开