IMSDK封裝<一>
針對介面程式設計,而不是針對實現程式設計
我們要做一個iOS平臺的IMSDK,我們藉助XMPP Framework來做這件事. XMPP Framework是由牛人Robbi Hanson已經封裝好了的基於XMPP協議的IM框架,它的作用是作為一個和伺服器互動的橋樑,讓快速開發IM功能的人不必關係和伺服器信令傳輸的具體實現細節,並且它已經被廣泛用於實際專案中,我們打算基於它來做一個包含IM各種業務邏輯的封裝,我們稱之為IMSDK.
我們首先要做的事情就是進行模組劃分。模組功能的合理劃分也正是體現了對業務需求的理解。我們採用自底向上的方式來思考。
在最下面,XMPP Framework已經幫我們實現了訊息的流,我們需要用好這個流,所以我們為XMPP Framework建立一個管理者,提供登入、訊息傳送和訊息接收的介面。我們把這個管理者稱之為服務層。接下來,我們在之上來考慮業務模組,具體的業務模組會有:登入模組、花名冊模組、聊天模組、群組模組。分別命名為LoginModule、RosterModule、ChatModule、MUCManagerModule.模組劃分完後,我們再來考慮訊息從管理者如何分發到上面的模組。
在訊息的分發上有多種思路,不過按照設計模式的原則針對介面程式設計而不是針對實現程式設計,我們採用了多型的思路。我們將業務模組抽取一個基類,命名為BaseModule。管理者面對的是BaseModule,BaseModule做兩件事,一是:canHandleElement,另外一個是handleELement。子類模組過載即可。
至此,IMSDK的模組劃分已經出來了。
相關文章
- IMSDK封裝<二>封裝
- IMSDK封裝<三>封裝
- 統一結果封裝封裝
- 一、類的封裝性封裝
- 【封裝那些事】 缺失封裝封裝
- 封裝一個通用的PopupWindow封裝
- 用promise封裝一個ajaxPromise封裝
- 使用ts封裝一個ajax封裝
- 封裝封裝
- 封裝了一個? URL地址解析封裝
- 封裝一個自己的js庫封裝JS
- 一個簡單的 Amqp 封裝MQ封裝
- ApiResponse介面統一響應封裝API封裝
- JavaScript物件導向之一(封裝)JavaScript物件封裝
- 【封裝小技巧】is 系列方法的封裝封裝
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- Sqlite封裝1-基本封裝-SqliteToolSQLite封裝
- 一起來封裝一個BasePopupWindow吧封裝
- 【JavaScript框架封裝】實現一個類似於JQuery的動畫框架的封裝JavaScript框架封裝jQuery動畫
- Flutter 封裝:富文字 RichText 極簡封裝Flutter封裝
- Dapper的封裝、二次封裝、官方擴充套件包封裝,以及ADO.NET原生封裝APP封裝套件
- AVPlayer封裝封裝
- ajax 封裝封裝
- 封裝OCX封裝
- 封裝介面封裝
- sqlite封裝SQLite封裝
- java封裝Java封裝
- java 封裝Java封裝
- EventBus封裝封裝
- FMDB封裝封裝
- websocket封裝Web封裝
- 5.1封裝封裝
- 09 #### 封裝封裝
- 封裝Vue元件的一些技巧封裝Vue元件
- Flutter 封裝一個 Banner 輪播圖Flutter封裝
- 方法返回資料統一封裝封裝
- 8.7 一個模組的封裝過程封裝
- Api 介面的統一響應封裝API封裝