应用架构编码级别可分为MVC MVP MVVM
从项目上架构分为组件化 插件化
MVC Model View Controller
Model 相当于网络请求数据,数据库取出数据,View 相当于xml java编写的view,Controller相当于Activity Fragment
View向Controller发起请求action,Controller向Model发起请求,请求返回CallBack到Controller,然后在更新View
从上面来看Controller里面包含了一部分View的功能,并且Model和View可以直接相互操作,使得耦合性非常的大,于是有了MVP
MVP Model View Presenter
Model层与MCV一样网络,数据库获取数组,View层变为了Activity Fragment xml,Presenter层只是Model View之间的桥梁,
他们都是通过面向接口编程降低了耦合度
View需要实现View interface的接口,Presenter也是要实现 Presenter interface,Model要实现call back
然后View通知Presenter请求数据,Presenter通知Model,Model数据返回后Callbak到Presenter中,Presenter更新View,这样就可以降低耦合度,如果View有更新可以不需要修改逻辑直接替换
MVVM Model ViewModel View
他其实与MVP差不多,区别在于View和ViewModel是通过dataBInding实现双向的绑定
组件化
组件化是插件化的前奏,根据自己要使用的业务来划分,一般都是一个壳工程+几个业务Module+依赖库
要解决的问题组件通信机制+组件件跳转+数据存储+资源冲突等等
插件化
不需要发包,直接通过加装插件就能实现应用更新,适合大型项目功能并行开发,内部原理有滴滴提供插件化框,使用hook机制
MVC MVP https://blog.csdn.net/u010072711/article/details/77132403
MVVM https://blog.csdn.net/u010072711/article/details/78633151
插件化 https://blog.csdn.net/yyh352091626/article/details/74852390