希望用简洁的语言说清楚
MVC
这是最基础的MVC模式,对应一个简单UML图
以上就是一个参考设计UML图,activity参考代码
//activity代码
public void updateData(){
BookModel bookModel = new BookModel(this);
bookModel.getBookList(new BookModel.onBookListListener(){
@Override
public void onSuccess(List<Book> list){
tvBookName.setText(……)
}
@Override
public void onFailed(){
}
});
}
整个项目结构图大多长这样
>activity
LoginActivity
HomeActivity
>model
LoginModel
HomeModel
可以看出,这种写法代码结构会很清晰,有利于整个项目组统一风格。但有局限,因为在这个结构下,activity承担了太多职责,它的像Control控制Model,还的负责修改UI。基本占据了CV的角色,所有从MVC的角度来说没设计好,但却很好用。比较适合小团队内部使用,代码复用性会比较高,也很清晰。
MVP
MVP是MVC的一个变种,一个Android版本的改良,个人感觉它在上述MVC的基础上,将activity进行了细分。使用Presenter来替代activity处理逻辑,activity只要处理View的变更显示就好。
简单UML图长这样
对应项目简单结构图
>login
LoginActivity
LoginPresenter
IloginView
>otherpage
如果项目特别大,想通过接口编程也可以设计成这样
>login
>presenter
ILoginPresenter
LoginPresenterImp
>view
LoginActivity
IloginView
>otherpage
这种项目结构梗适合多人协作,将原来一个人一年的事拆成12个人一个月的活,相互之间大都通过页面区分,通过接口联系。耦合性降的很低,可以一个人写View,一个人写逻辑。但在使用的过程当中,因为块分的很细,所有复用需要更多的考虑,代码冗余会比较多。
MVVM
MVVM 中的VM指ViewModel,这虽然是一个类,但还需要配合databinding生成的xxxDataBinding类和BR类来操作,只是这几个类会在编译器生成。所以自己的代码看起来一般只会有Activity/Fragment + ViewModel + Model类。
这里大部分的疑问在如果数据绑定放在xml里面怎么实现预览,实际场景中,如果想要预览可以在xml中使用tools:text之类的预览生效