設計模式理解

隨著開發工作的增長,對于代碼質量的提高顯得尤為重要。我認為在提高代碼質量中,最為立竿見影的就是要有一個好的項目架構,而好的架構中最重要的就是一個好的設計模式。本篇結合我個人對設計模式的理解,持續更新中。

一、常用設計模式

常用的設計模式有: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中ViewController緊緊耦合在一起的位置,在MVP中是Presenter,它與視圖控制器的生命周期沒有任何關聯,并且由于沒有任何布局的代碼,很容易模擬視圖View。它的職責是更新View中的數據和狀態。

3.MVVM模式


MVVM模式

它和MVP模式很像:視圖控制器劃分成View、ViewModel之間沒有緊密的耦合。

此外,數據綁定的概念很像帶監控器的MVP,不同的是這次綁定的是ViewViewModel,而不是ViewModel。那么在實際的iOS開發中ViewModel是什么?從根本上來說,它是獨立于UIKit能夠展現你的View和狀態。ViewModel可以調用Model來改變數據,也可以通過數據變更來更新自己,因為ViewViewModel進行了綁定,相應地也就能同步更新View

三、總結

好的設計模式可以提高程序的復用性、減低程序的耦合性。但是也不要盲目的追求設計模式,因為每種設計模式都有自己的優缺點,所以選擇當前項目中適合自己的設計模式顯得非常重要。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容