物件導向程式設計的一大好處就是封裝。可以使用各種行為來組建應用程式,而這些行為能分為不同但又可以起互動的元件,為這些元件建立物件。
元件可能是一些介面或檢視。其他的元件可能是底層的資料或模型的一部分。還有一些事控制器,用於將檢視和資料關聯起來。但是這些區分並不足夠。當建立更多的應用程式時,你會發現自己一遍又一遍的重複做同樣型別的事情。
哎喲解決該問題,首選也是最經典的方式,是在物件和相關的螢幕中設定引用。詳情螢幕(detail screen)會有概覽(overview)的引用,屬性編譯器會擁有到詳情螢幕的引用,等等。
然後每個類都實現方法,讓另外的類呼叫。概覽檢視會有乙個方法用於更新一輛汽車。詳情檢視也會有類似的目的方法。詳情檢視有乙個方法用於更新字段。很快到最後,**會像一碗義大利面,充斥著各種相互關聯的方法、屬性和螢幕。某個地方的改動會對其他地方造成重要的影響。**不靈活而且難以維護。更糟糕的是,類開始明確針對它們所要顯示的資料,所以用的一組類以及介面流。這些都不可重用。
使用協議是修復該問題的好方法。協議定義一種型別的物件如何與另一種型別的物件交流:我需要何種資訊?我將傳送何種資訊和狀態?以及我能實現何種行為?協議也可以具體致命,**必須實現哪兒些訊息以及哪兒些訊息是可選的。
使用協議允許清理這碗義大利面,並且很容易做出變更,因為你知道具體哪兒個類、螢幕或物件如何與另乙個交流。可以更改協議的供給者或使用者的整個實現部分的**,只要他們都遵循該協議即可,並且隨著深入,你會開始將常見的需求抽取為類,從而能能在多個專案中重用。
使用協議讓這些變得更簡單,尤其是在你注意到物件是協議的**,或是協議的實現而非只是協議時。
HTTP協議的運作方式
http協議是基於請求 響應正規化的。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求方式的格式為,統一資源識別符號 協議版本號,後邊是mime資訊包括請求修飾符 客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行包括資訊的協議版本號 乙個成功或錯誤的 後邊是m...
Tokenall位元幣挖掘如何運作
tokenall.io.數字貨幣錢包 自從做了區塊鏈財經 後,感覺自己成長不少。運營經驗甚少的我只是喜愛時常撩撥文字,但卻算不得精通。這段時間的歷練,讓我感觸頗深。tokenall是區塊鏈的錢包社群,tokenall.io可以進行數字貨幣的儲存,也可以用手機進行代幣的挖取。下面我們來聊聊位元幣挖掘如...
MySQL 16 order by如何運作
order by 根據提供的字段進行排序 用法 order by column asc 預設 desc limit 從結果集上再進行刷選 用法 limit offset rows。如下語句建表 給city建索引 create table a id int 11 not null,name varch...