經過4天的開發,ios的網絡書店基本完成了:
- 登陸注冊
- 圖書列表,下拉放開刷新,下拉到底查看更多,圖片異步加載
- 我的信息,查看訂單修改密碼
- 查看圖書詳情
- 加入購物車
- 提交訂單
- sqllite存放瀏覽日志,定時提交
- plist文件存放購物車
架構中最重要的元素:
- 模塊化,縱向分割
- 層次化,橫向分割
- 抽象和實現分離
- 解耦,同構組件如何通訊,異構組件如何通訊
- 職責分離
重構中:消除重復代碼,消除魔數
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)下載:這里
希望不要誤導新手,高手路過幫忙看一下有什么可以改進的,特別是架構上。
