IOS 設計模式

weixin_33806914發表於2018-03-11

IOS開發中幾種設計模式:單例模式、觀察者模式、MVC模式、代理模式


一、單例模式

場景:確保程式執行期某個類,只有一份例項,用於進行資源共享控制。

優勢:使用簡單,延時求值,易於跨模組

敏捷原則:單一職責原則

例項:[UIApplication sharedApplication]。

注意事項:確保使用者只能通過 getInstance方法才能獲得,單例類的唯一例項。

java,C++中使其沒有公有建構函式,私有化並覆蓋其建構函式。

object c中,重寫allocWithZone方法,保證即使使用者用 alloc方法直接建立單例類的例項,

返回的也只是此單例類的唯一靜態變數。


二、觀察者模式

場景:一般為model層對,controller和view進行的通知方式,不關心誰去接收,只負責釋出資訊。

優勢:解耦合

敏捷原則:介面隔離原則,開放-封閉原則

例項:Notification通知中心,註冊通知中心,任何位置可以傳送訊息,註冊觀察者的物件可以接收。

kvo,鍵值對改變通知的觀察者,平時基本沒用過。


三、MVC

場景:是一中非常古老的設計模式,通過資料模型,控制器邏輯,檢視展示將應用程式進行邏輯劃分。

優勢:使系統,層次清晰,職責分明,易於維護

敏捷原則:對擴充套件開放-對修改封閉

例項:model-即資料模型,view-檢視展示,controller進行UI展現和資料互動的邏輯控制。


四、代理模式

場景:當一個類的某些功能需要由別的類來實現,但是又不確定具體會是哪個類實現。

優勢:解耦合

敏捷原則:開放-封閉原則

例項:tableview的 資料來源delegate,通過和protocol的配合,完成委託訴求。

列表row個數delegate

自定義的delegate

一句話總結:傳入物件實現物件的功能


iOS開發之網路程式設計:常用網路協議

一、網路協議

國際標準化組織(ISO)定義了網路協議的基本框架,被稱為OSI模型。要制定通訊規則,內容會很多,比如要考慮A電腦如何找到B電腦,A電腦在傳送資訊 給B電腦時是否需要B電腦進行反饋,A電腦傳送給B電腦的資料的格式又是怎樣的?內容太多太雜,所以OSI模型將這些通訊標準進行層次劃分,每一層次解決 一個類別的問題,這樣就使得標準的制定沒那麼複雜。OSI模型制定的七層標準模型,分別是:應用層,表示層,會話層,傳輸層,網路層,資料鏈路層,物理層。

6809220-72de166b8c043825.jpg

二、HTTP協議

HTTP是一個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統,全稱是Hypertext Transfer Protocol(超文字傳輸協議),而且它是屬於上面的層次模型的應用層。

從NSURLConnection到NSURLSession再到AFNetworking,它們的網路傳輸都採用的是HTTP協議

請求方法。其實請求並不單單隻有Get、Post這兩種。一共有:GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH八種之多。而最常用的是Get、Post,我也沒看到過有其他的請求方法的使用。


三、HTTPS協議

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

超文字傳輸協議HTTP協議被用於在Web瀏覽器和網站伺服器之間傳遞資訊。HTTP協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此HTTP協議不適合傳輸一些敏感資訊,比如信用卡號、密碼等。

為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文字傳輸協議HTTPS。為了資料傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證照來驗證伺服器的身份,併為瀏覽器和伺服器之間的通訊加密。


TTPS和HTTP的區別主要為以下四點:

https協議需要到ca申請證照,一般免費證照很少,需要交費。

http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。


四、TCP/IP協議

iOS開發中,TCP/IP一般會和Socket牽扯到一起。Socket是基於TCP/IP協議的封裝,主要是用於資料傳輸,即時通訊這一塊。單純的TCP/IP,在網路層次模型中,TCP和IP是兩個協議,TCP是運用的資料鏈路層的一個協議,用於將資訊傳送到更高一層的網路層,而IP協議就是為網路層服務的。

相關文章