模塊設計
或許以爲功能不難,給個人需求就簡單幾句話。在編碼以前我想弄清楚本身開發的模塊是怎麼樣的,該怎麼與外界交互。我要找到個工具將這點弄明白,因而想到畫UML圖。html
UML活動圖
看UML建模之活動圖介紹(Activity Diagram)瞭解了一下,畫活動圖比較好,感受這個大概能達到個人目的。因而畫了以下兩個圖,分別表示IAP兩個階段發生的事:git
簡單介紹
當時瞭解到的需求是隻用提供Web調用的接口,參照Android的設計,我覺得本模塊只用負責邏輯處理部分,不涉及UI展現,因此設計了以上活動圖,個人工做主要是App部分。後來需求改了。github
需求改變
- 本模塊負責IAP全部事項,包括UI展現
- 本模塊須要能被原生App調用
- 考慮到虛擬幣商品的固定性,簡化購買過程
- 虛擬幣商品比較固定,展現商品時能夠拿本地商品信息展現,而不用等到App Store返回商品信息
- 將請求商品信息與購買商品合併到「肯定支付」過程當中
UML時序圖
需求更改後活動圖有變化,可初版代碼編寫後,模塊與外界的交互已經比較好理解,我就沒再上新圖了。我用另一種圖肯定了模塊內的設計。順便學習一下時序圖工具
簡單介紹
- 調用者
- ViewController:這裏是App原生調用代碼。考慮到易嵌入性,我此次放棄使用代理方式,而選擇了Block做爲反饋處理。希望代碼中沒有出現Cycle Retain。
- IAP模塊
- IAPViewController:模塊的主要處理類,負責與用戶交互,及調用IAPManager與IAPObserver 與App Store進行交互;
- IAPManager:負責處理請求商品信息;
- IAPObserver:負責處理購買商品。
IAPManager和IAPObserver只將過程信息打成log,錯誤信息提示等與用戶交互相關的處理經過Block交給IAPViewController。學習
Demo
iapTest編碼
後續
- UML圖是利用在線工具processon畫的,保存什麼的仍是很方便,不過功能不及EA等;
- 設計與代碼都在學習中,歡迎一塊兒交流。