设计模式理解

随着开发工作的增长,对于代码质量的提高显得尤为重要。我认为在提高代码质量中,最为立竿见影的就是要有一个好的项目架构,而好的架构中最重要的就是一个好的设计模式。本篇结合我个人对设计模式的理解,持续更新中。

一、常用设计模式

常用的设计模式有:MVC、MVP、MVVM。

二、各设计模式介绍

1.MVC模式

MVC设计模式是在开发中最经常用到的设计模式,而苹果官方也推荐使用MVC设计模式。MVC设计模式分为两种,一种是传统的MVC,一种是苹果MVC。


传统MVC

如上图就是传统MVC的架构:

controller层持有View和Model,View和model之间还有依赖。其中View层是无状态的,即它不做任何信息记录,只负责展示信息。但此模式有个很大的弊端,就是MVC各层耦合度太高,每一个实体都要和其他两个实体产生关联,无法进行测试和复用。

接下来是苹果推荐的MVC架构:

苹果的MVC架构

此架构和传统架构的最大区别就是将View层和Model层进行分离,即View层和Model层没有耦合性,其中View层和Model层的交互都由C层代为中转。这样造成C层代码量很大,所以很多人说苹果推荐的MVC为重控制器模式,看下图会清晰很多:

重MVC

如上图,其实此MVC模式的中C层和View层在View的生命周期中相互依赖,以至于很难将他们分开,也正由于此,所以导致MVC的代码不可进行单元测试,因为在面对单元测试中,难以独立开MVC的耦合关系。在不调用视图控制器生命周期方法的前提下,不可能对视图控制器进行测试。

2.MVP模式

MVP模式

如上图,MVP模式中新增了一个Presenter层。回想一下MVC中View和Controller紧紧耦合在一起的位置,在MVP中是Presenter,它与视图控制器的生命周期没有任何关联,并且由于没有任何布局的代码,很容易模拟视图View。它的职责是更新View中的数据和状态。

3.MVVM模式


MVVM模式

它和MVP模式很像:视图控制器划分成View、View和Model之间没有紧密的耦合。

此外,数据绑定的概念很像带监控器的MVP,不同的是这次绑定的是View和ViewModel,而不是View和Model。那么在实际的iOS开发中ViewModel是什么?从根本上来说,它是独立于UIKit能够展现你的View和状态。ViewModel可以调用Model来改变数据,也可以通过数据变更来更新自己,因为View和ViewModel进行了绑定,相应地也就能同步更新View。

三、总结

好的设计模式可以提高程序的复用性、减低程序的耦合性。但是也不要盲目的追求设计模式,因为每种设计模式都有自己的优缺点,所以选择当前项目中适合自己的设计模式显得非常重要。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容