IMSDK封裝<一>

xiaobaicai發表於2016-03-06

針對介面程式設計,而不是針對實現程式設計

我們要做一個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的模組劃分已經出來了。 enter image description here

相關文章