加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

关于MVC/MVP/MVVM的一些错误认识

发布时间:2019-11-02 16:12:32 所属栏目:业界 来源:科技在发展
导读:在Android开拓中行使MVP和MVVM模式早已不是奇怪事了,各类MVP/MVVM相干的文章、开源库也已多如牛毛,乃至是让人目眩撩乱,那么我为什么还要在这个早已被画满涂鸦的黑板上再来涂涂画画呢?是想彰显我的存在感吗?那虽然!啊不不不不完满是!我还想要警觉读到这

能感觉到我想表达的意思吗?就是Presenter/ViewModel按照当前交互状态抉择该表现什么,而View要做的是怎样表现它们。再好比说下拉革新的场景,由View汇报Presenter/ViewModel,它吸取到了下拉变乱,然后Presenter/ViewModel再汇报View,让它去表现革新提醒视图,至于这个革新提醒长什么样就由View来抉择。虽然Presenter/ViewModel也也许会判定当前收集不行用,而让View表现一个收集不行用的提醒视图。

为什么要让Presenter/ViewModel处理赏罚险些全部的示意层逻辑呢?首要是为了进步可测试性,将尽也许多的示意层逻辑纳入到单位测试的范畴内。由于对视图控件的表现等等举办单位测试太难了,以是View是根基上没法举办单位测试的,可是Presenter/ViewModel是完全可以举办单位测试的:

  1. public class ProfilePresenterTest { 
  2.     private ProfilePresenter presenter; 
  3.     private ProfileView view; 
  4.     @Test 
  5.     public void testShowEditStateOnButtonClick() { 
  6.         // 赏识状态下点击编辑按钮,验证View是否表现了编辑状态视图 
  7.         // 也就是验证view.showEditState()要领是否被挪用了 
  8.         presenter.setState(State.NORMAL); 
  9.         presenter.onEditStateButtonClicked(); 
  10.         Mockito.verify(view).showEditState(); 
  11.     } 
  12.     @Test 
  13.     public void testShowNormalStateOnButtonClick() { 
  14.         // 编辑状态下点击完成按钮,验证View是否表现了赏识状态视图 
  15.         // 也就是验证view.showNormalState()要领是否被挪用了 
  16.         presenter.setState(State.EDIT); 
  17.         presenter.onEditStateButtonClicked(); 
  18.         Mockito.verify(view).showNormalState(); 
  19.     } 

你看,这些示意层逻辑就都能举办单位测试了吧!或许懂我意思了吧?

关于MVC/MVP/MVVM的一些错误熟悉

OK,此刻你已经知道示意层了,那营业层又是干什么用的呢?此刻我们就要开始谈到M了。

M是什么?M是指那些喜好从受虐中得到性……哎呀,欠盛意思,搞混了!哎~学识广博就是贫困!M者,Model也,再长一点就是Domain Model,中文名字叫规模模子。我们看一下维基百科上对Domain model的界说:

  • In software engineering, a domain model is a conceptual model of the domain that incorporates both behaviour and data.

怎么样,是不是很普通易懂呀?虽然不是!方才开始有点领略Model层是处理赏罚营业逻辑的,此刻又来了个抖MMM……Domain,我都不知道该往那边去想了!Domain,简朴点就把它领略成营业,我认为都没啥题目。我这里引用这句话,首要是想夸大,Model层包括了营业数据以及对营业数据的操纵(behaviour and data),也是为了引出第二个错误概念。

错误二:Model就是静态的营业数据

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读