14 架构模式介绍
MVC(Model-View-Controller,模型-视图-控制器),使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
MVC是一个架构模式,是三种设计模式:观察者模式、策略模式和组合模式的合体,核心在观察者模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器,它们各自处理自己的任务。
(1)视图
视图是用户看到并与之交互的界面,用来呈现模型,视图通常从模型中取得它需要显示的数据和状态。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
(2)模型
模型表示企业数据和业务规则,持有所有的数据、状态和程序逻辑。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
(3)控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。当用户点击某个按钮或菜单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
MVC其实是非常高Level的抽象,意思也就是,在MVC体系下还可以再衍生无数的架构方式,但万变不离其宗的是,它一定符合MVC的规范。MVC的其中一个缺点便是没有明确的定义,所以不同的实现,细节上都是不一样的。
MVC框架图:
在MVC里,View是可以直接访问Model的,View里会包含Model信息,不可避免的还要包括一些业务逻辑。
在Android开发中,Activity和Fragment即是V,又是C,导致代码极其臃肿。