Android框架(*)
框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。框架包括MVC、MVP和MVVM等。
MVC:
安卓MVC模式将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,其中,XML、Activity和Fragment是视图层,Activity和Fragment是控制器层,Model是模型层。
-
模型(Model):负责数据处理相关的逻辑,例如数据库存取操作、网络操作、复杂算法和耗时任务等。
-
视图(View):应用层中处理数据显示的部分,负责将用户的请求通知Controller,并根据model更新界面,XML布局文件可视为View层。
-
控制器(Controller):接收用户请求并更新model,起到桥梁的作用,来控制View层和Model层通信以此来达到分离视图显示和业务逻辑层。在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取View视图层的数据,并控制用户输入,同时向Model发送数据请求。
MVC看作是3种设计模式:观察者模式、策略模式与组合模式的合体,而且其核心在观察者模式,也就是一个基于发布/订阅者模型的框架。
MVC缺点:
-
Activity即是View又是Controller,会很复杂。具体来讲:xml作为view层,控制能力实在太弱了,比如按钮点击动态改变UI,必须Activity协助操作视图,因此Activity即是View又是Controller。
-
View与Model之间存在依赖关系,Controller很重很复杂。具体来讲:View层的Activity会直接发起请求操作Model层,Model层返回的数据会更新Activity的相关视图。
MVP:
MVP中的View不能直接访问Model,需要通过Presenter发出请求。
Model(模型):负责处理数据的获取、存储和操作,例如与数据库、网络请求等进行交互。
View(视图):负责展示界面和接收用户的输入,通常是安卓中的 Activity、Fragment 或自定义视图组件。
Presenter( presenter ):作为 View 和 Model 之间的中介,处理业务逻辑和协调 View 与 Model 之间的通信。
优点:
-
将View与Model解耦,方便进行单元测试。
-
Presenter层可通过实现接口与View层通信从而避免Presenter层与View层耦合。
-
activity和fragment不再是controll