iOS移动平台架构设计
《iOS移动平台架构设计》由会员分享,可在线阅读,更多相关《iOS移动平台架构设计(12页珍藏版)》请在装配图网上搜索。
1、低耦合公司级系统架构设计我们往往称JavaEE或.Net开发的产品为“系统”,而移动平台(重要是:Android、iOS和WindowPhone)开发的产品为“应用”。“系统”比较复杂,需要架构设计,而“应用”相对比较简朴,这是不是意味着我们不需要考虑架构问题呢?我们一方面理解一下公司级系统架构设计。软件设计的原则是提高软件系统的“可复用性”和“可扩展性”,系统架构设计采用层次划分方式,这些层次之间是 松耦合的,层次的内部是高内聚的。减少耦合是软件设计的目的,可以设计出低耦合的系统,就意味着我们的系统具有“可复用性”和“可扩展性”。通用低耦合 JavaEE和.Net公司级系统架构图。表达层是顾
2、客与系统交互的组件集合,顾客通过这一层向系统提交祈求或发出指令,系统通过这一层接受顾客祈求或指令,然后,将指令消化吸取后调用下一层,再将调用的成果呈现到这一层。表达层应当是轻薄的不应当具有业务逻辑。业务层是系统的核心业务解决层,负责接受表达层的指令和数据,消化吸取后,进行组织业务逻辑的解决,并将成果返回给表达层。数据持久层是服务层用于访问数据库层,从设计规范上讲为了减少耦合度,服务层不应当具有访问数据库的代码,访问数据库的代码应当放到数据持久层中。信息系统层,是系统的数据来源,可以是数据库、文献、遗留系统和网络数据。移动平台的分层架构设计移动平台的应用是缩小版本的系统,它也需要架构设计,但并非
3、所有的应用都一定基于通用低耦合公司级系统架构,一般而言重要是波及信息解决的应用才使用这种架构设计模式,例如:某些游戏有自己的游戏引擎,引擎也属于架构设计。iOS平台一般信息解决应用分层架构设计图。表达层,iOS中的表达层是由UIKitFramework构成的,它涉及我们前面学习的视图、控制器、控件和事件解决等内容;业务逻辑层,采用什么框架要据具体的业务而定,但一般是具有一定业务解决功能的Objective-C和C+封装的类,或者是C封装的函数。中国返利网.com 艺尚网.com数据持久层,提供本地或网络数据访问,它也许是访问SQLite数据API函数,也也许是CoreData技术,或是访问文献
4、的NSFileManager,或是网络通信等技术,采用什么方式要看信息系统层是什么。信息系统层,就iOS而言它的信息来源分为:本地和网络。本地数据可以放入文献中也可以放在数据库中,目前iOS本地数据库采用SQLite3。网络可以是某个云服务,也可以是一般的Web服务。基于同一工程的分层架构对于我们iPhone和iPad开发有着很现实的意义。如果我们要编写一种基于iOS(iPhone和iPad两个平台)“My备忘录”应用, 它具有:增长、删除和查询备忘录的基本功能,“备忘录”应用用例图,分层设计之后,表达层可以有不同iPhone版和iPad版本,并且业务逻辑层、数 据持久层和信息系统层都可以公用
5、。这样可以大大减少我们的工作量,这就是分层设计的好处。iOS考虑iPhone和iPad两个平台,我们绘制了设计原型草图,iPhone版本的“My备忘录”应用设计原型草图。iPad版本的“My备忘录”横屏设计原型草图,iPad版本的“My备忘录”竖屏设计原型草图。在iOS平台分层的具体做法有多种模式:基于同一工程的分层、基于一种工作空间不同工程的分层和静态链接库分层。本小节简介基于同一工程的分层。我们在前文中已经简介了构建自适应iPhone和iPad工程,就是我们目前要讲的基于同一工程的分层模式。请读“备忘录”应用的代码,实现过程这 里不做简介,打开“MyNotes”工程,在Xcode工程导航面
6、板有3个组:PresentationLayer、 BusinessLogicLayer和PersistenceLayer。创立这3个组的目的是把不同层中类放到相应的组中便于管 理,PresentationLayer是放置的表达层有关类,BusinessLogicLayer是放置的业务逻辑层的有关 类,PersistenceLayer是放置持久层有关类。各个层的下面再如何划分呢?我们可以按照业务模块划分,也可以按照组件功能划分。本应用中PersistenceLayer层就还要提成dao和 domain两个组,dao是放置数据访问对象的,该对象中有对数据访问的CRUD四类措施,为了减少耦合度dao
7、一般要设计成为合同(或Java接 口),然后根据不同的数据来源采用不同的实现方式。domain组是实体类,实体是应用中的“人”、“事”、“物”等。dao组中NoteDAO.h代码如下:interface NoteDAO : NSObject/保存数据列表property (nonatomic,strong) NSMutableArray* listData;+ (NoteDAO*)sharedManager;/插入Note措施-(int) create:(Note*)model;/删除Note措施-(int) remove:(Note*)model;/修改Note措施-(int) modify
8、:(Note*)model;/查询所有数据措施-(NSMutableArray*) findAll;/按照主键查询数据措施-(Note*) findById:(Note*)model;endlistData属性用于保存数据表中的数据,其中每一种元素都是Note对象,一种Note对象代表数据表中的一条数据。+(NoteDAO*)sharedManager措施用于获得NoteDAO单例对象。dao组中NoteDAO.m代码如下:implementation NoteDAO中国返利网.com 艺尚网.comstatic NoteDAO *sharedManager = nil;+ (NoteDAO*
9、)sharedManagerstatic dispatch_once_t once;dispatch_once(&once, NSDateFormatter *dateFormatter = NSDateFormatter alloc init;dateFormatter setDateFormat:yyyy-MM-dd HH:mm:ss;NSDate *date1 = dateFormatter dateFromString:-08-04 16:01:03;Note* note1 = Note alloc init;note1.date = date1;note1.content = ”We
10、lcome to MyNote.”;NSDate *date2 = dateFormatter dateFromString:-12-04 16:01:03;Note* note2 = Note alloc init;note2.date = date2;note2.content = ”欢迎使用MyNote。”;sharedManager = self alloc init;sharedManager.listData = NSMutableArray alloc init;sharedManager.listData addObject:note1;sharedManager.listDa
11、ta addObject:note2;);return sharedManager;/插入Note措施-(int) create:(Note*)modelself.listData addObject:model;return 0; /删除Note措施-(int) remove:(Note*)modelfor (Note* note in self.listData) /比较日期主键与否相等if (note.date isEqualToDate:model.date)self.listData removeObject: note;break;return 0; /修改Note措施-(int)
12、 modify:(Note*)modelfor (Note* note in self.listData) /比较日期主键与否相等if (note.date isEqualToDate:model.date)note.content = model.content;break;return 0; /查询所有数据措施-(NSMutableArray*) findAllreturn self.listData; /按照主键查询数据措施-(Note*) findById:(Note*)modelfor (Note* note in self.listData) /比较日期主键与否相等if (note
13、.date isEqualToDate:model.date)return note;return nil;endNoteDAO实现采用了单例设计模式,这种设计与DAO设计模式没有关系,这重要是出于访问数据的以便。数据放置在listData属性中(本应当是从数据库中的,但是数据库访问技术我们还没有学习),CRUD措施也都是对listData的解决,而非数据库。domain组中Note代码如下,它只有两个属性date是创立备忘录的日期,content是备忘录内容:/ Note.h#import interface Note : NSObjectproperty(nonatomic, strong
14、) NSDate* date;property(nonatomic, strong) NSString* content;end/ Note.m#import ”Note.h”implementation Noteend/ Note.h#import interface Note : NSObjectproperty(nonatomic, strong) NSDate* date;property(nonatomic, strong) NSString* content;end/ Note.m#import ”Note.h”implementation Noteend业务逻辑层Business
15、LogicLayer中的类的设计一般是按照业务模块设计的,它的措施是业务解决措施,下面代码是NoteBL.h代码:interface NoteBL : NSObject/插入Note措施-(NSMutableArray*) createNote:(Note*)model;/删除Note措施-(NSMutableArray*) remove:(Note*)model;/查询所有数据措施-(NSMutableArray*) findAll;end在NoteBL.h中定义了三个措施,之因此定义三个措施是根据我的业务需求决定的,业务需求可以参照的用例图。下面代码是NoteBL.m代码:implemen
16、tation NoteBL/插入Note措施-(NSMutableArray*) createNote:(Note*)modelNoteDAO *dao = NoteDAO sharedManager;dao create:model;return dao findAll; /删除Note措施-(NSMutableArray*) remove:(Note*)modelNoteDAO *dao = NoteDAO sharedManager;dao remove:model;return dao findAll; /查询所有数据措施-(NSMutableArray*) findAllNoteDAO *dao = NoteDAO sharedManager;return dao findAll; end
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。