设计模式深入学习IOS版(8)架构设计

1 前言

  之前我们学习了那么多的设计模式,都是用来提高软件系统的“可复用性”和“可扩展性”的。今天我们来学习一下IOS开发中的应用的架构设计。

  转载请注明出处:http://blog.csdn.net/developer_zhang

2 详述

  我们设计的系统架构应该采用分层划分方式,而且每层之间都应该是送耦合的,层次内部是高内聚的。如图为通用的低耦合的企业级系统架构图:

表示层:用户与系统交互的组件集合。用户通过这一层向系统提交请求或者发出指令,系统通过这一层接受用户指令,调用下一层,然后将结果展现到这一层。表示层应该是轻薄的,不应该具有业务逻辑。

业务逻辑层:系统的核心业务处理层。负责接收表示层的指令和数据,待指令和数据消化吸收后,再进行组织业务逻辑的处理,并返回结果给表示层。

数据持久层:数据持久层用于访问信息系统层,从设计规范上讲是为了降低耦合度,业务逻辑层不应该具有访问数据库或者文件操作的代码,这些代码应该放到数据持久层中。

信息系统层:系统的数据来源,可以使数据库,文件,遗留系统或者网络数据。

2.1 实例分析

  如果我们编写一个基于iOS(iPhone和iPad两个平台)的MyNotes应用,它具有增删改查备忘录的功能。用例图如下:

  分层设计后,表示层可以分为iPhone和iPad版本,而业务逻辑层,数据持久层和信息系统层可以公用,这样大大减少了我们的工作量。

  在IOS平台中,分层架构设计有多种模式:基于同一工程的分层,基于一个工作空间不同工程的分层和静态链接库分层。这里我们简单介绍基于统一工程的分层。

  在本应用中,我们分为三组--PresentationLayer,BusinessLogicLayer和PersistenceLayer,其中PresentationLayer用于放置标识相关的类,BusinessLogicLayer用于放置逻辑层相关类,PersistenceLayer用于放置持久层相关的类。在各个层下面,我们可以按照业务模块划分,也可以按照组件功能划分。而PersistenceLayer层还要分为dao和domain两个组。dao用于放置数据访问对象,该对象中访问数据的CRUD四个类方法。为了降低耦合度,dao一般要设计成协议(或Java接口),然后根据不同的数据来源采用不同的实现方式。domain组是实体类,实体是应用中的”人“,”事“,”物“等。


代码实例:

Note实体类:

#import <Foundation/Foundation.h>

/*!
 *  Note实体类
 *
 *  @since V1.0
 */
@interface Note : NSObject

@property (nonatomic,strong) NSDate* date;
@property (nonatomic,strong) NSString* content;

@end

数据持久化操作类:

#import <Foundation/Foundation.h>
#import "Note.h"

/*!
 *  数据持久化操作类(用listData来模拟sqlLite)
 *
 *  @since V1.0
 */
@interface NoteDAO : NSObject

//保存数据列表
@property (nonatomic,strong) NSMutableArray* listData;
//单例方式实例化自身对象
+(NoteDAO*) shareInstance;
//增加备忘录方法
-(int) add:(Note*)model;
//删除备忘录方法
-(int) remove:(Note*)model;
//修改备忘录方法
-(int) update:(Note*)model;
//查询所有
-(NSMutableArray*) findAll;
//根据主键查询数据的方法
-(Note*) findById:(Note*)model;

@end

备忘录业务逻辑类:

#import <Foundation/Foundation.h>
#import "NoteDAO.h"

/*!
 *  备忘录业务逻辑类
 *
 *  @since V1.0
 */
@interface NoteBL : NSObject

//插入备忘录方法
-(NSMutableArray*) addNote:(Note*)model;
//删除备忘录的方法
-(NSMutableArray*) removeNote:(Note*)model;
//查询所有方法
-(NSMutableArray*) findAll;

@end

3 结语

  以上是所有内容,希望对大家有所帮助。

  代码实例:http://download.csdn.net/detail/u010013695/6968053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值