天天看點

分享一個BookStore ios程式的例子

經過4天的開發,ios的網絡書店基本完成了:

  • 登陸注冊
  • 圖書清單,下拉放開重新整理,下拉到底檢視更多,圖檔異步加載
  • 我的資訊,檢視訂單修改密碼
  • 檢視圖書詳情
  • 加入購物車
  • 送出訂單
  • sqllite存放浏覽日志,定時送出
  • plist檔案存放購物車

 架構中最重要的元素:

  1. 子產品化,縱向分割
  2. 階層化,橫向分割
  3. 抽象和實作分離
  4. 解耦,同構元件如何通訊,異構元件如何通訊
  5. 職責分離

重構中:消除重複代碼,消除魔數

BookStore應用雖然簡單,但包括的内容不少

  • 分層架構
  • 層之間的通訊控制
  • 各種資料通路的示範
分享一個BookStore ios程式的例子
分享一個BookStore ios程式的例子

分層架構如下:

  • Resources用于各種資源,比如圖檔、icon和多語言的文本
  • Core就是業務邏輯層用于管理資料通路層,以及作為資料的容器
    • Controller就是業務邏輯控制器,也可以命名為Service,每一種業務邏輯對應一種控制器
    • Entity就是資料實體,此外還用于description的生成以及序列化控制
  • Data就是資料通路層
    • 其中有本地的資料通路(包括UserDefaults、plist檔案以及本地的sqllite)
    • 以及遠端的資料通路(http+json)
  • UI就是前端
    • 包括ViewController
    • 對應的View
    • 封裝的TableViewCell
    • ViewController之間通訊的協定
  • Utility中包括擴充、常量以及小工具

層之間的通訊控制如下:

  • ViewController作為前端入口,直接和Controller通訊,其中VC->C是方法調用,而C->VC是NoficationCenter的消息通知,Controller之間采用的是方法調用
  • ViewController之間的通訊采用的是協定,效率高又可以解耦
  • Controller作為業務邏輯的入口,會調用本地資料通路服務和遠端資料通路服務,對于後者BookController到BookService采用的是方法調用,傳回采用的是回調Block
  • Service網絡層采用異步OperationQueue,異步完成後調用Controller注冊的回調方法,回調方法中再發通知,通知ViewController層
  • Service網絡層有BaseService封裝了網絡的通用處理,會直接和BaseViewController進行互動,用于通用的一些等待和錯誤處理

C層到VC層采用通知,VC層之間采用協定,VC到C層采用方法調用,C到S層采用方法調用,S到C層采用Block回調。

分享一個BookStore ios程式的例子
分享一個BookStore ios程式的例子
分享一個BookStore ios程式的例子
分享一個BookStore ios程式的例子
分享一個BookStore ios程式的例子

代碼下載下傳:

這裡

服務端程式(基于ASP.NET MVC)下載下傳:

資料庫備份(基于MS SQL)下載下傳:

希望不要誤導新手,高手路過幫忙看一下有什麼可以改進的,特别是架構上。

作者:

lovecindywang

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。