经过4天的开发,ios的网络书店基本完成了:
- 登陆注册
- 图书列表,下拉放开刷新,下拉到底查看更多,图片异步加载
- 我的信息,查看订单修改密码
- 查看图书详情
- 加入购物车
- 提交订单
- sqllite存放浏览日志,定时提交
- plist文件存放购物车
- UI框架分享
架构中最重要的元素:
- 模块化,纵向分割
- 层次化,横向分割
- 抽象和实现分离
- 解耦,同构组件如何通讯,异构组件如何通讯
- 职责分离
重构中:消除重复代码,消除魔数
BookStore应用虽然简单,但包括的内容不少
- 分层架构
- 层之间的通讯控制
- 各种数据访问的演示
- UI框架资源分享
分层架构如下:
- Resources用于各种资源,比如图片、icon和多语言的文本
- Core就是业务逻辑层用于管理数据访问层,以及作为数据的容器
- Controller就是业务逻辑控制器,也可以命名为Service,每一种业务逻辑对应一种控制器
- Entity就是数据实体,此外还用于description的生成以及序列化控制
- Data就是数据访问层
- 其中有本地的数据访问(包括UserDefaults、plist文件以及本地的sqllite)
- 以及远程的数据访问(http+json)
- UI就是前端
- 包括ViewController
- 对应的View
- 封装的TableViewCell
- ViewController之间通讯的协议
- Utility中包括扩展、常量以及小工具
- UI框架资源示例
层之间的通讯控制如下:
- 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回调。资源分享
希望不要误导新手,高手路过帮忙看一下有什么可以改进的,特别是架构上。
相关推荐
在iOS平台上,构建一个类似书架的应用,如“ios bookstore”,涉及到多个技术层面,包括UI设计、动画效果、数据管理以及用户体验优化等。这个应用的核心功能是展示书籍,并且提供了分页和翻页的特效,这使得用户在...
在这个例子中,你可能需要使用Mule Studio来创建和部署BookStore应用。 8. **监控和调试**:利用Mule的监控工具,如Mule Management Console(MMC),实时查看应用的运行情况,进行故障排查和性能优化。 9. **源码...
在数据库创建一个名为BookStore的数据库,在BookStore数据库中添加一个BookInfo表用于存储图书信息表,再往表里面添加一些测试数据、前端页面以表格形式显示所有图书信息、并完成增加添加书籍、修改书籍、删除书籍的...
本文将深入探讨"bookStore.rar"提供的网上书城示例,它是一个基于JSP(JavaServer Pages)技术构建的电子商务平台。该系统实例旨在为开发者提供一个可以直接在Eclipse环境中运行的参考项目,以帮助学习者理解和掌握...
该项目名为"bookStore_bookstore_",是一个基于Java Web技术实现的图书购买系统。虽然它相对简单且未完全开发完毕,但仍然可以为我们提供一个理解Web应用开发的基础框架。以下是关于该项目的一些核心知识点: 1. **...
"bookstore"这一主题,暗示着我们即将探讨的是一个关于在线书店的应用程序或者系统。这个系统是基于著名的"petstore"进行改进的,意味着它借鉴了宠物商店应用的架构和设计,但针对书籍销售进行了优化和定制。 在...
本项目“网上书店bookstore创建”就是一个基于Hibernate框架的Web应用程序开发实例,旨在提供用户友好的在线购书体验。下面将详细介绍 Hibernate 的使用以及在创建网上书店时的相关知识点。 **一、Hibernate 框架**...
这个"bookstore"项目可能是一个示例或教程,用于演示如何在实际开发中将这些框架有效地结合在一起,创建一个完整的Web应用程序。现在让我们深入探讨SSH整合及其在"bookstore"项目中的应用。 **Spring框架** 是一个...
在Java企业级应用开发中,`J2EE`(Java 2 Platform, Enterprise Edition)是一个标准平台,用于构建可扩展且具有高度安全性的分布式应用程序。`Struts2`是基于`MVC`(Model-View-Controller)设计模式的一个开源框架...
【标题】"bookstore-master_nightuju_bookstore-master_bookstoremaster_books" 提示我们这是一个关于书店管理系统的项目,由用户 "nightuju" 创建或维护,可能包含多个版本迭代,其中"bookstoremaster"可能是项目的...
首先,"BookStore源码"是一个完整的Java Web项目,基于Servlet和JSP技术,可能还涉及了MVC设计模式。MVC模式将应用程序分为Model(模型)、View(视图)和Controller(控制器)三个部分,使得代码结构清晰,易于维护...
`jsp bookstore`项目是一个基于JSP的图书管理系统,它允许用户浏览、搜索和购买书籍。在这个系统中,JSP与Servlet、数据库(如MySQL)以及HTML、CSS和JavaScript等前端技术相结合,提供了一个功能完善的线上购书平台...
MEAN堆栈Web应用程序。 支持CRUD功能。 入门 先决条件:已安装Node.js和mongodb 克隆此应用git clone https://github.com/csd713/BookStore.git cd BookStore 安装依赖项npm install 在新终端上启动MongoDB- ...
【BookStore.zip】是一个压缩包,包含了开发一个基础版本的书店管理系统所需的相关文件。这个系统被称为"BookStore",它的设计可能相对简单,且未经精细装饰,因此在提交作为作业时,可能需要进行一系列的优化以提升...
《Java EE 7教程:Duke's Bookstore》是一个经典的示例应用,它全面展示了Java企业版7(Java EE 7)的关键技术和开发实践。这个源代码提供了学习和理解Java EE 7平台的一个实用起点。 Java EE 7是Java平台上用于...
在IT行业中,"bookstore更新"这个话题涉及到的是一个书店相关的Web应用程序的更新过程。这个应用很可能基于Java Web技术栈,利用了Spring、SpringMVC和MyBatis(SSM)这三个核心框架,因为标签中提到了"bookstore ...
"Bookstore.zip" 是一个压缩包文件,通常用于存储多个相关文件或文件夹,便于管理和传输。在这个案例中,我们可以看到一系列与一个书店相关的Web应用程序的文件和目录。以下是根据提供的文件名列表推测出的一些关键...
标题中的"bookstore1.rar"表明这是一个压缩文件,通常用于集合多个相关文件以便于传输或存储。在这个案例中,它可能包含一个完整的SpringBoot多模块项目。SpringBoot是Java生态系统中一个流行的微服务框架,旨在简化...