应用很早就上线了,欢迎大家下载使用:http://itunes.apple.com/app/id1206687109
源码已经公开,大家可以去https://github.com/Inspirelife96/ILDiligence下载。 喜欢的话Fork或者给个Star,非常感谢。
下面是这一系列的全部帖子:
想法和原型
勤之时 - 架构与工程组织结构
勤之时 - 数据持久层的实现
勤之时 - 网络层的实现
勤之时 - 业务逻辑层
勤之时 - Info.plist的改动
勤之时 - 表示层(一)
勤之时 - 表示层(二)
勤之时 - 表示层(三)
勤之时 - 表示层(四)
勤之时 - 表示层(五)
业务逻辑层是衔接数据持久层(网络层)与表示层的中间一层,他读取数据持久层的数据,经过业务处理,然后传递给表示层用与展示的数据。同样,当表示层操作使数据发生变化时,通过业务逻辑层将变化的数据保存到数据持久层。
因此,必不可少,我们在这里会处理所谓MVC模式里面M的部分。也许不是直接用于VC的Model,但至少是这一Model的基本来源。
【勤之时】的表示层主要有3个DataCenter和一些列的Model构成。
- ILDTaskDataCenter
- ILDDiligenceDataCenter
- ILDStoryDataCenter
- ILDTaskModel
- ILDDiligenceModel
- ILDStoryModel
- ILDStatisticsTodayModel
- ILDStatisticsHistoryModel
ILDTaskDataCenter 和 ILDTaskModel 主要向下面这些页面提供数据服务接口和数据模型。
我们可以想到的功能是这些:
//获得所有的TaskId,用于任务一览的展示
- (NSArray *)taskIds;
//根据taskId获取对应的TaskModel,用于Task Configuration的展示/修改等。
- (ILDTaskModel *)taskConfigurationById:(NSString *)taskId;
//添加一个任务,并保存
- (void)addTask:(ILDTaskModel *)taskConfiguration;
//更新一个任务,并保存
- (void)updateTask:(NSString *)taskId taskConfiguration:(ILDTaskModel *)taskConfiguration;
//删除一个任务,并保存
- (void)removeTask:(NSString *)taskId;
ILDDiligenceDataCenter 和 ILDDiligenceModel,ILDStatisticsTodayModel, ILDStatisticsHistoryModel主要向下面这些页面提供数据服务接口和数据模型。
我们可以想到的功能是这些:
//当任务计时完成,我们需要添加一条勤记录到数据持久层。
- (void)addDiligence:(ILDDiligenceModel *)diligenceData;
//当某一个任务删除时,需要把该任务对应的所有勤记录从数据持久层中删除。
- (void)removeDiligence:(NSString *)taskId;
//提供今日统计的数据模型。数据是基于数据持久层中的勤数据来统计的。
- (ILDStatisticsTodayModel *)prepareStatisticsToday;
//提供历史数据的数据模型。数据是基于数据持久层中的勤数据来统计的。
- (ILDStatisticsHistoryModel *)prepareStatisticsHistory;
ILDStoryDataCenter 和 ILDStoryModel主要向下面这些页面提供数据服务接口和数据模型。
我们可以想到的功能是这些:
//提供今日故事模型
- (ILDStoryModel *)prepareStoryModel;
ILDTaskDataCenter, ILDDiligenceDataCenter, ILDStoryDataCenter读取对应的数据持久层的数据,根据业务逻辑,重新组装数据,提供给表示层使用,并负责对数据持久层的增删改操作。
这三个类都以单例的形式设计,因为在应用程序运行期间他们有且仅需要一份内容。