background image

一般的

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;