CDC.GZ-关东升.iOS分层架构设计.pdf

上传人:哈尼dd 文档编号:3329094 上传时间:2019-08-13 格式:PDF 页数:39 大小:3.37MB
返回 下载 相关 举报
CDC.GZ-关东升.iOS分层架构设计.pdf_第1页
第1页 / 共39页
CDC.GZ-关东升.iOS分层架构设计.pdf_第2页
第2页 / 共39页
CDC.GZ-关东升.iOS分层架构设计.pdf_第3页
第3页 / 共39页
CDC.GZ-关东升.iOS分层架构设计.pdf_第4页
第4页 / 共39页
CDC.GZ-关东升.iOS分层架构设计.pdf_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《CDC.GZ-关东升.iOS分层架构设计.pdf》由会员分享,可在线阅读,更多相关《CDC.GZ-关东升.iOS分层架构设计.pdf(39页珍藏版)》请在三一文库上搜索。

1、CDCCDC中国开发者大会中国开发者大会广州广州 内容概要:本次盛会开设五大主题论坛,HTML5、iOS、 Android、Unity、Cocos2d-X,Flash,全面覆盖IT行业从业者, 立足于游戏和移动两大行业,秉承“百花齐放,百家争鸣”的 原则,聚集行业热点话题,推动技术不断前进。 中国开发者大会中国开发者大会广州广州 China Developers Conference Guangzhou Contact Us Lorem ipsum dolor, 03663, State, Country P. 123 456 7890 / iOS分层架构设计 低耦合企业级系统架构设计 3

2、智捷iOS课堂 iOS分层架构设计 5 智捷iOS课堂 6 智捷iOS课堂 “备忘录”应用 8 智捷iOS课堂 基于同一工程的分层实现 13 智捷iOS课堂 Persistence Layer(数据制持久层) DAO和Domain dao是放置数据访问对象的,该对象中有对数据访问的CRUD四类方法,为了 降低耦合度dao一般要设计成为协议(或Java接口),然后根据不同的数据来 源采用不同的实现方式。 domain是实体类,实体是应用中的“人”、“事”、“物”等,也叫“业务 领域对象”。 15 智捷iOS课堂 NoteDAO.h代码 interface NoteDAO : NSObject /

3、保存数据列表 property (nonatomic,strong) NSMutableArray* listData; + (NoteDAO*)sharedManager; /插入Note方法 -(int) create:(Note*)model; /删除Note方法 -(int) remove:(Note*)model; /修改Note方法 -(int) modify:(Note*)model; /查询所有数据方法 -(NSMutableArray*) findAll; /按照主键查询数据方法 -(Note*) findById:(Note*)model; end 16 智捷iOS课堂 单

4、例实现DAO static NoteDAO *sharedManager = nil; + (NoteDAO*)sharedManager static dispatch_once_t once; dispatch_once( NSDateFormatter *dateFormatter = NSDateFormatter alloc init; dateFormatter setDateFormat:“yyyy-MM-dd HH:mm:ss“; NSDate *date1 = dateFormatter dateFromString:“2010-08-04 16:01:03“; Note*

5、note1 = Note alloc init; note1.date = date1; note1.content = “Welcome to MyNote.“; NSDate *date2 = dateFormatter dateFromString:“2011-12-04 16:01:03“; Note* note2 = Note alloc init; note2.date = date2; note2.content = “欢迎使用MyNote。“; sharedManager.listData = NSMutableArray alloc init; sharedManager.l

6、istData addObject:note1; sharedManager.listData addObject:note2; ); return sharedManager; 17 智捷iOS课堂 插入和删除方法 /插入Note方法 -(int) create:(Note*)model self.listData addObject:model; return 0; /删除Note方法 -(int) remove:(Note*)model for (Note* note in self.listData) /比较日期主键是否相等 if (note.date isEqualToDate:mo

7、del.date) self.listData removeObject: note; break; return 0; 18 智捷iOS课堂 修改方法 /修改Note方法 -(int) modify:(Note*)model for (Note* note in self.listData) /比较日期主键是否相等 if (note.date isEqualToDate:model.date) note.content = model.content; break; return 0; 19 智捷iOS课堂 查询方法 /查询所有数据方法 -(NSMutableArray*) findAll

8、return self.listData; /按照主键查询数据方法 -(Note*) findById:(Note*)model for (Note* note in self.listData) /比较日期主键是否相等 if (note.date isEqualToDate:model.date) return note; return nil; 20 智捷iOS课堂 Domain中Note / / Note.h #import interface Note : NSObject property(nonatomic, strong) NSDate* date; property(nonat

9、omic, strong) NSString* content; end / / Note.m #import “Note.h“ implementation Note end 21 智捷iOS课堂 BusinessLogic Layer(业务逻辑层) NoteBL.h interface NoteBL : NSObject /插入Note方法 -(NSMutableArray*) createNote:(Note*)model; /删除Note方法 -(NSMutableArray*) remove:(Note*)model; /查询所有数据方法 -(NSMutableArray*) fin

10、dAll; end 业务逻辑层中的类的设计一般是按照业务模块设计的,它的方法是 业务处理方法。之所以定义三个方法是根据我的业务需求决定的。 23 智捷iOS课堂 NoteBL.m /插入Note方法 -(NSMutableArray*) createNote:(Note*)model NoteDAO *dao = NoteDAO sharedManager; dao create:model; return dao findAll; /删除Note方法 -(NSMutableArray*) remove:(Note*)model NoteDAO *dao = NoteDAO sharedMan

11、ager; dao remove:model; return dao findAll; /查询所有数据方法 -(NSMutableArray*) findAll NoteDAO *dao = NoteDAO sharedManager; return dao findAll; 24 智捷iOS课堂 Presentation Layer(表示层) AppDelegate.h和AppDelegate.m,应用程序委托对象; MasterViewController.h和MasterViewController.m,Master视图控制器; DetailViewController.h和Detail

12、ViewController.m,Detail视图控制器; AddViewController.h和AddViewController.m,Add视图控制器; MainStoryboard_iPhone.storyboard,iPhone版的故事板文件; MainStoryboard_iPad.storyboard,iPad版的故事板文件。 26 智捷iOS课堂 判断设备 if (UIDevice currentDevice userInterfaceIdiom = UIUserInterfaceIdiomPhone) / iPhone设备 if (screenSize.height 480.

13、0f) / iPhone 5 设备 else / iPhone 5 之前设备 else / iPad 设备 27 智捷iOS课堂 基于一个工作空间不同工程的分层 由于某些原因不想提供源代码,我们可以将业务逻辑层和数据持久层编写成为静态链 接库(Static Library或Static Link Library)。 29 智捷iOS课堂 静态链接库 所谓“库”(Library)是一些没有main函数的程序代码的集合,除了静态链接库还有 动态链接库。静动态链接的区别是:静态链接库可以编译到你的执行代码中,应用程 序可以在没有静态链接库环境下运行;而动态链接库不能编译到你的执行代码中,应 用程序必

14、须在有链接库文件环境下运行。 30 智捷iOS课堂 创建的过程 创建工作空间 PersistenceLayer静态连接库工程 BusinessLogicLayer静态连接库工程 31 智捷iOS课堂 创建静态连接库工程 静态链接库工程 静态链接库工程拷贝头文件 添加依赖关系 添加头文件搜索设置 32 智捷iOS课堂 完成之后工作空间 33 智捷iOS课堂 依赖关系 34 智捷iOS课堂 总结 细化开发角色 提高开发效率 便于敏捷开发的实施 适配不同设备的屏幕尺寸 可以适配于Mac OS X应用 36 智捷iOS课堂 谢谢 Tel: 158-0157-7739 Mail: 新浪微博:tony_关东升 博客:CSDN:http:/ 51CTO:http:/ THANK YOU Contact Us Lorem ipsum dolor, 03663, State, Country P. 123 456 7890 / 中国开发者大会中国开发者大会广州广州 China Developers Conference Guangzhou 新浪微博: 9Tech开发者社区 微信账号: DC9Tech

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1