分享一個BookStore ios程序的例子


 

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

  • 登陸注冊
  • 圖書列表,下拉放開刷新,下拉到底查看更多,圖片異步加載
  • 我的信息,查看訂單修改密碼
  • 查看圖書詳情
  • 加入購物車
  • 提交訂單
  • sqllite存放瀏覽日志,定時提交
  • plist文件存放購物車

 架構中最重要的元素:

  1. 模塊化,縱向分割
  2. 層次化,橫向分割
  3. 抽象和實現分離
  4. 解耦,同構組件如何通訊,異構組件如何通訊
  5. 職責分離

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

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

  • 分層架構
  • 層之間的通訊控制
  • 各種數據訪問的演示

 

 

分層架構如下:

  • 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回調。

 

 

 

 

 

 

 

代碼下載:這里

服務端程序(基於ASP.NET MVC)下載:這里

數據庫備份(基於MS SQL)下載:這里

  

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM