@chenhongen
2019-02-28T13:56:14.000000Z
字数 2105
阅读 1808
例如:赛事列表界面、社区界面、我的界面、消息界面、设置界面、话题主页界面等等
例如:加载帖子列表数据、处理帖子列表数据、导航栏颜色变化、帖子详情交互逻辑、发帖、查看图片、播放视频、消息跳转、banner跳转、上下拉操作、输入框键盘处理、推送、分享、埋点等等
例如:AFN二次封装、https适配、图片视频上传下载、网络状态监控等等
例如:sql3.0数据库本地化存储、偏好设置存储、归档等等
项目中没有使用严格意义上的MVVM,苹果推荐使用MVC,优点是View、Model可以重复利用,可以独立使用
但是MVC也有缺点,Controller的代码过于臃肿,所以我们对苹果的MVC做了一些优化,对Controller进行瘦身,将View内部的细节封装起来了,外界不知道View内部的具体实现
然后仅仅这样做也是有缺点的:View依赖于Model,所以我们最终采用了MVVM模式,将View/View-Controller与Model分离开,View不依赖于Model,两者之间通过ViewModel进行通信,ViewModel会处理一部分业务逻辑,分担Controller的压力,解决Controller的代码过于臃肿的问题
可重用代码、让代码更容易被他人理解、保证代码可靠性
创建型模式:对象实例化的模式,用于解耦对象的实例化过程
单例模式、工厂方法模式
结构型模式:把类或对象结合在一起形成一个更大的结构
代理模式、适配器模式
行为型模式:类或对象之间如何交互,及划分责任和算法
观察者模式、命令模式
介绍项目结构主要是为了让其他同事能通过文档快速熟悉项目,这里只介绍核心的类
目前为止项目主要分为四大target、八大模块
Bloom宿主项目
NotificationServer 推送服务处理
NotificationViewController 推送自定义处理
Pods管理三方库(暂且把它归为target,单独管理所有的三方库)
Main顾名思义,程序的主入口
该模块是网络层的处理
目前分为七大类
Me
除了NetWork是对网络二次封装外,其他六个都是具体模块的网络请求接口,可以在具体的接口中进行个性化处理,例如:本地化存取,字典转模型,数据筛选等等
Other目前分为四大类