分享一個BookStore ios程式的例子

來源:互聯網
上載者:User

 

經過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)下載:這裡

Database Backup(基於MS SQL)下載:這裡

  

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.