一般的
Web 服务。
基于同一工程的分层
架 构 对 于 我 们 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 代码如下:
@interface NoteDAO : 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;