关于MVC/MVP/MVVM的一些错误认识
能感受到我想表达的意思吗?就是Presenter/ViewModel根据当前交互状态决定该显示什么,而View要做的是如何显示它们。再比如说下拉刷新的场景,由View告诉Presenter/ViewModel,它接收到了下拉事件,然后Presenter/ViewModel再告诉View,让它去显示刷新提示视图,至于这个刷新提示长什么样就由View来决定。当然Presenter/ViewModel也可能会判断当前网络不可用,而让View显示一个网络不可用的提示视图。 为什么要让Presenter/ViewModel处理几乎所有的表现层逻辑呢?主要是为了提高可测试性,将尽可能多的表现层逻辑纳入到单元测试的范围内。因为对视图控件的显示等等进行单元测试太难了,所以View是基本上没法进行单元测试的,但是Presenter/ViewModel是完全可以进行单元测试的:
你看,这些表现层逻辑就都能进行单元测试了吧!大概懂我意思了吧? OK,现在你已经知道表现层了,那业务层又是干什么用的呢?现在我们就要开始谈到M了。 M是什么?M是指那些喜欢从受虐中获得性……哎呀,不好意思,搞混了!哎~学识渊博就是麻烦!M者,Model也,再长一点就是Domain Model,中文名字叫领域模型。我们看一下维基百科上对Domain model的定义:
怎么样,是不是很通俗易懂呀?当然不是!刚刚开始有点理解Model层是处理业务逻辑的,现在又来了个抖MMM……Domain,我都不知道该往哪里去想了!Domain,简单点就把它理解成业务,我觉得都没啥问题。我这里引用这句话,主要是想强调,Model层包含了业务数据以及对业务数据的操作(behaviour and data),也是为了引出第二个错误观点。 错误二:Model就是静态的业务数据 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |