iOS移动平台架构设计.docx

上传人:b****2 文档编号:552801 上传时间:2022-10-11 格式:DOCX 页数:12 大小:395.79KB
下载 相关 举报
iOS移动平台架构设计.docx_第1页
第1页 / 共12页
iOS移动平台架构设计.docx_第2页
第2页 / 共12页
iOS移动平台架构设计.docx_第3页
第3页 / 共12页
iOS移动平台架构设计.docx_第4页
第4页 / 共12页
iOS移动平台架构设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

iOS移动平台架构设计.docx

《iOS移动平台架构设计.docx》由会员分享,可在线阅读,更多相关《iOS移动平台架构设计.docx(12页珍藏版)》请在冰豆网上搜索。

iOS移动平台架构设计.docx

iOS移动平台架构设计

iOS移动平台架构设计

低耦合企业级系统架构设计

我们往往称JavaEE或.Net 开发的产品为“系统”,而移动平台(主要是:

Android、iOS和Window Phone)开发的产品为“应用”。

“系统”比较复杂,需要架构设计,而“应用”相对比较简单,这是不是意味着我们不需要考虑架构问题呢?

 

我们首先了解一下企业级系统架构设计。

软件设计的原则是提高软件系统的“可复用性”和“可扩展性”,系统架构设计采用层次划分方式,这些层次之间是松耦合的,层次的内部是高内聚的。

降低耦合是软件设计的目标,能够设计出低耦合的系统,就意味着我们的系统具有“可复用性”和“可扩展性”。

通用低耦合JavaEE和.Net企业级系统架构图。

表示层是用户与系统交互的组件集合,用户通过这一层向系统提交请求或发出指令,系统通过这一层接收用户请求或指令,

架构对于我们iPhone和iPad开发有着很现实的意义。

如果我们要编写一个基于iOS(iPhone和iPad两个平台)“My备忘录”应用,它具有:

增加、删除和查询备忘录的基本功能, “备忘录”应用用例图,分层设计之后,表示层可以有不同iPhone版和iPad版本,而且业务逻辑层、数据持久层和信息系统层都可以公用。

这样可以大大减少我们的工作量,这就是分层设计的好处。

iOS考虑iPhone和iPad两个平台,我们绘制了设计原型草图, iPhone版本的“My备忘录”应用设计原型草图。

iPad版本的“My备忘录”横屏设计原型草图, iPad版本的“My备忘录”竖屏设计原型草图。

 

 

 

 

在iOS平台分层的具体做法有多种模式:

基于同一工程的分层、基于一个工作空间不同工程的分层和静态链接库分层。

本小节介绍基于同一工程的分层。

我们在前文中已经介绍了构建自适应iPhone和iPad工程,就是我们现在要讲的基于同一工程的分层模式。

请读“备忘录”应用的代码,实现过程这里不做介绍,打开“MyNotes”工程,在Xcode工程导航面板有3个组:

PresentationLayer、BusinessLogicLayer和PersistenceLayer。

创建这3个组的目的是把不同层中类放到对应的组中便于管理, PresentationLayer是放置的表示层相关类,BusinessLogicLayer是放置的业务逻辑层的相关类,PersistenceLayer是放置持久层相关类。

各个层的下面再如何划分呢?

我们可以按照业务模块划分,也可以按照组件功能划分。

本应用中PersistenceLayer层就还要分成dao和domain两个组,dao是放置数据访问对象的,该对象中有对数据访问的CRUD四类方法,为了降低耦合度dao一般要设计成为协议(或Java接口),然后根据不同的数据来源采用不同的实现方式。

domain组是实体类,实体是应用中的“人”、“事”、“物”等。

dao组中NoteDAO.h代码如下:

@interfaceNoteDAO:

NSObject

//保存数据列表

@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

listData属性用于保存数据表中的数据,其中每一个元素都是Note对象,一个Note对象代表数据表中的一条数据。

+ (NoteDAO*)sharedManager方法用于获得NoteDAO单例对象。

dao组中NoteDAO.m代码如下:

@implementationNoteDAO

中国返利网艺尚网

staticNoteDAO*sharedManager=nil;

+(NoteDAO*)sharedManager

{

staticdispatch_once_tonce;

dispatch_once(&once,^{

NSDateFormatter*dateFormatter=[[NSDateFormatteralloc]init];

[dateFormattersetDateFormat:

@"yyyy-MM-ddHH:

mm:

ss"];

NSDate*date1=[dateFormatterdateFromString:

@"2010-08-0416:

01:

03"];

Note*note1=[[Notealloc]init];

note1.date=date1;

note1.content=@”WelcometoMyNote.”;

NSDate*date2=[dateFormatterdateFromString:

@"2011-12-0416:

01:

03"];

Note*note2=[[Notealloc]init];

note2.date=date2;

note2.content=@”欢迎使用MyNote。

”;

sharedManager=[[selfalloc]init];

sharedManager.listData=[[NSMutableArrayalloc]init];

[sharedManager.listDataaddObject:

note1];

[sharedManager.listDataaddObject:

note2];

});

returnsharedManager;

}

//插入Note方法

-(int)create:

(Note*)model

{

[self.listDataaddObject:

model];

return0;

}

//删除Note方法

-(int)remove:

(Note*)model

{

for(Note*noteinself.listData){

//比较日期主键是否相等

if([note.dateisEqualToDate:

model.date]){

[self.listDataremoveObject:

note];

break;

}

}

return0;

}

//修改Note方法

-(int)modify:

(Note*)model

{

for(Note*noteinself.listData){

//比较日期主键是否相等

if([note.dateisEqualToDate:

model.date]){

note.content=model.content;

break;

}

}

return0;

}

//查询所有数据方法

-(NSMutableArray*)findAll

{

returnself.listData;

}

//按照主键查询数据方法

-(Note*)findById:

(Note*)model

{

for(Note*noteinself.listData){

//比较日期主键是否相等

if([note.dateisEqualToDate:

model.date]){

returnnote;

}

}

returnnil;

}

@end

NoteDAO实现采用了单例设计模式,这种设计与DAO设计模式没有关系,这主要是出于访问数据的方便。

数据放置在listData属性中(本应该是从数据库中的,但是数据库访问技术我们还没有学习),CRUD方法也都是对listData的处理,而非数据库。

domain组中Note代码如下,它只有两个属性date是创建备忘录的日期,content是备忘录内容:

//

//Note.h

#import

@interfaceNote:

NSObject

@property(nonatomic,strong)NSDate*date;

@property(nonatomic,strong)NSString*content;

@end

//

//Note.m

#import”Note.h”

@implementationNote

@end

//

//Note.h

#import

@interfaceNote:

NSObject

@property(nonatomic,strong)NSDate*date;

@property(nonatomic,strong)NSString*content;

@end

//

//Note.m

#import”Note.h”

@implementationNote

@end

业务逻辑层BusinessLogicLayer中的类的设计一般是按照业务模块设计的,它的方法是业务处理方法,下面代码是NoteBL.h代码:

@interfaceNoteBL:

NSObject

//插入Note方法

-(NSMutableArray*)createNote:

(Note*)model;

//删除Note方法

-(NSMutableArray*)remove:

(Note*)model;

//查询所有数据方法

-(NSMutableArray*)findAll;

@end

在NoteBL.h中定义了三个方法,之所以定义三个方法是根据我的业务需求决定的,业务需求可以参考的用例图。

下面代码是NoteBL.m代码:

@implementationNoteBL

//插入Note方法

-(NSMutableArray*)createNote:

(Note*)model

{

NoteDAO*dao=[NoteDAOsharedManager];

[daocreate:

model];

return[daofindAll];

}

//删除Note方法

-(NSMutableArray*)remove:

(Note*)model

{

NoteDAO*dao=[NoteDAOsharedManager];

[daoremove:

model];

return[daofindAll];

}

//查询所有数据方法

-(NSMutableArray*)findAll

{

NoteDAO*dao=[NoteDAOsharedManager];

return[daofindAll];

}

@end

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1