浅谈模型-视图-控制器模式
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。我接下来就简单的描述一下我对于模型-视图-控制器模式的理解。
模型-视图-控制器模式又叫MVC模式,也就是Model View Controller模式。它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。其中Model(模型)指的是应用程序中用于处理应用程序数据逻辑的部分,一般来说,模型对象负责在数据库中存取数据。View(视图)指的是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)指的是应用程序中处理用户交互的部分。通常控制器负责协调模型和视图,从视图读取数据,控制用户输入,并向模型发送数据,根据用户请求的来选择调用哪个模型来处理业务,以及最终由哪个视图为用户做出响应。
模型:负责封装并实现应用的具体功能。可以实现系统中的业务逻辑,通常可以用JavaBean来实现。
视图:用于与用户的交互。用来将模型的内容展现给用户。用户可以通过视图来请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展示给用户,相当于提供页面来与用户进行人机交互。比如用户在登陆注册界面完成信息的填报后点击确定,由此来向控制器发出这个请求。
控制器:是Model与View之间沟通的桥梁。用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型相映射,也就是调用模型来实现用户请求的功能。然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。
MVC模式的这三个部分的职责非常明确,而且相互分离,因此每个部分都可以独立地改变而不影响其他部分,从而大大提高应用的灵活性和重用性。
MVC模式可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 但是与此同时,它也增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。