iOS项目介绍及说明

之前写的一系列文章或者小经验一直没有时间去整理放在博客上,今天整理出来,之前是写在作业部落,语法是markdown,请忽略这些markdown的符号 - -,点击链接浏览也可以,希望对你有帮助。

https://www.zybuluo.com/chenhongen/note/1387726

这是之前项目的写法,仅做参考


---

## 一、整体架构
### 1、四层架构
#### 界面层
> 例如:赛事列表界面、社区界面、我的界面、消息界面、设置界面、话题主页界面等等


#### 业务层

> 例如:加载帖子列表数据、处理帖子列表数据、导航栏颜色变化、帖子详情交互逻辑、发帖、查看图片、播放视频、消息跳转、banner跳转、上下拉操作、输入框键盘处理、推送、分享、埋点等等

#### 网络层

> 例如:AFN二次封装、https适配、图片视频上传下载、网络状态监控等等

#### 本地数据层

> 例如:sql3.0数据库本地化存储、偏好设置存储、归档等等

### 2、MVVM
#### MVC&MVVM的选择

- 项目中没有使用严格意义上的MVVM,苹果推荐使用MVC,优点是View、Model可以重复利用,可以独立使用

- 但是MVC也有缺点,Controller的代码过于臃肿,所以我们对苹果的MVC做了一些优化,对Controller进行瘦身,将View内部的细节封装起来了,外界不知道View内部的具体实现

- 然后仅仅这样做也是有缺点的:View依赖于Model,所以我们最终采用了MVVM模式,将View/View-Controller与Model分离开,View不依赖于Model,两者之间通过ViewModel进行通信,ViewModel会处理一部分业务逻辑,分担Controller的压力,解决Controller的代码过于臃肿的问题


### 3、设计模式
#### 原则
可重用代码、让代码更容易被他人理解、保证代码可靠性
#### 项目中常用的三大设计模式
1. 创建型模式:对象实例化的模式,用于解耦对象的实例化过程
> 单例模式、工厂方法模式

2. 结构型模式:把类或对象结合在一起形成一个更大的结构
> 代理模式、适配器模式

3. 行为型模式:类或对象之间如何交互,及划分责任和算法
> 观察者模式、命令模式

---
## 二、项目结构
介绍项目结构主要是为了让其他同事能通过文档快速熟悉项目,这里只介绍核心的类
目前为止项目主要分为四大target、八大模块
### 四大target

#### Bloom
Bloom宿主项目

#### NotificationServer
NotificationServer 推送服务处理

#### NotificationViewController
NotificationViewController 推送自定义处理

#### Pods
Pods管理三方库(暂且把它归为target,单独管理所有的三方库)

### 八大模块
- Main
- Login
- Home
- Community
- Me
- Message
- Service
- Other

#### Main
Main顾名思义,程序的主入口

- 核心类 SKTTabBarController,展示三个tab
- 核心基类族 Base
- BaseControllers:包括对Navigation、NavUIBaseView、TextView、RequestBaseView、BaseView、TableView、StaticTable、CollectionView、WebView、RefreshTableView、RefreshCollection封装的控制器
- BaseView:以上VC使用的View
- BaseModels:以上VC使用的Model
- WebViewController:所有的webView均在此VC中统一处理,如有必要,可以继承此类单独处理业务逻辑

#### Login

- Controller:包括登录相关所有界面
- Tools:SKTUserManager、SKTUser,存储用户登录信息

#### Home
- Controller/View/Model/ViewModel:该模块承载首页相关所有界面/模型/自定义控件,以及今后首页的扩展界面(消息单独拎出来作为一个独立模块)
#### Community
- Controller/View/Model/ViewModel:该模块承载社区相关所有界面/模型/自定义控件,包括发帖、话题等,以及今后社区的扩展界面
#### Me
- Controller/View/Model/ViewModel:该模块承载我的相关所有界面/模型/自定义控件,包括设置等,以及今后我的扩展界面
#### Message
- Controller/View/Model/ViewModel:该模块承载消息相关所有界面/模型/自定义控件,以及今后消息扩展界面
#### Service
该模块是网络层的处理
目前分为七大类

- NetWork
- BaseRequest 请求数据管理核心
- BaseResponse 响应数据管理核心
- RequestManager 网络请求管理核心
- SetCookies
- Publish
- Login
- Home
- Message
- Community
- Me
除了NetWork是对网络二次封装外,其他六个都是具体模块的网络请求接口,可以在具体的接口中进行个性化处理,例如:本地化存取,字典转模型,数据筛选等等

#### Other

Other目前分为四大类

- Const 常量 宏定义:切换线上/测试/开发环境、管理颜色、 设备常量等文件
- Category 分类:系统api类扩展 例如:快速为控件添加事件、消息红点、Frame拓展、快速获取当前控制/导航控制器、快速下载图片并设置头像、暴力点击拦截等等
- Tools 自定义控件或者自定义管理文件 例如:支付、广告、欢迎页、tagBtn、空白界面、版本升级、数据库管理、友盟管理
- Vender 三方库或者三方插件

---

猜你喜欢

转载自www.cnblogs.com/chglog/p/10449968.html