MVC MVP MVVM设计模式进阶

MVC:在Android中的体现

Model:模型层,面向需求模型,数据模型               Beans实体sqiteDatabase

View:视图层,面向用户渲染ui画面                         layout自定义view

Controller:控制层,面向业务逻辑具体操作             activity Network网络具体业务逻辑

致命缺陷:会造成内存泄漏。

MVP思想精髓与解耦view和model的巧妙详解

Model:模型层

View:  视图层

Presenter:控制model进行业务逻辑处理,    处理完毕后数据封装到Model,收到通知后更新view

方式:是双向的通信方式

优点:view与model层完全分离,所有的逻辑交互都在presenter,分层较为严谨。利用持有view的弱引用,当activity退出时,清空弱引用持有的view,避免内存泄露

MVVM与DataBinding

MVVM是一种设计模式

DataBinding是一种工具,既可以用在MVVM ,也可以用于MVC,MVP

Model:模型层,可以直接使用observableField,内部设置了set  get方法

View:  视图层,使用data标签,DataBinding自动生成两个layout文件供DataBinding使用,一个用于渲染布局,一个用于配置信息

ViewModal:可以单项绑定,也可以双向绑定。处理业务逻辑

DataBinding原理:

编译时绑定布局与对象,扫描所有layout布局,如果有data标签,生成两份layout文件,一份用于渲染布局,添加tag标签,另一份用于配置数据,与model里面的数据相绑定。

通过apt生成class文件,通过activity获得顶层view,加载渲染布局,生成一个全局的runnable,监听每一个view,开设一个管道监听model,当model发生变化时,改变view

DataBinding的使用消耗大量的内存,主要是有三方面导致的

1.获取layout里面的view,存入object的数组中,绑定控件的时候再从数组中获取view

2.在全局变量中,有一个全局的runnable一直在监听view,一个activity对应一个runnable,项目越大,内存耗损越大

3.开设一个looper的管道监听model,当model发生改变时,改变view

你可能感兴趣的:(MVC MVP MVVM设计模式进阶)