您的位置:首页 > 其它

新东西019--MVC/MVP/MVVM

2018-01-18 11:06 253 查看
希望用简洁的语言说清楚


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 data-binding,将XML和activity绑定起来,但要熟悉data-binding的各种写法。而且windows版本使用data-binding有点不稳定,有时候重启androidstudio都不行,的重启电脑。



这种架构别具一格,不过我没在真实项目中使用过,以后用到再补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MVC MVP MVVM