设计模式深入学习IOS版------架构设计

来源:互联网 发布:遥知不是雪,为有暗香来 编辑:程序博客网 时间:2024/05/18 03:31

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实体类:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2.   
  3. /*! 
  4.  *  Note实体类 
  5.  * 
  6.  *  @since V1.0 
  7.  */  
  8. @interface Note : NSObject  
  9.   
  10. @property (nonatomic,strong) NSDate* date;  
  11. @property (nonatomic,strong) NSString* content;  
  12.   
  13. @end  

数据持久化操作类:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2. #import "Note.h"  
  3.   
  4. /*! 
  5.  *  数据持久化操作类(用listData来模拟sqlLite) 
  6.  * 
  7.  *  @since V1.0 
  8.  */  
  9. @interface NoteDAO : NSObject  
  10.   
  11. //保存数据列表  
  12. @property (nonatomic,strong) NSMutableArray* listData;  
  13. //单例方式实例化自身对象  
  14. +(NoteDAO*) shareInstance;  
  15. //增加备忘录方法  
  16. -(int) add:(Note*)model;  
  17. //删除备忘录方法  
  18. -(int) remove:(Note*)model;  
  19. //修改备忘录方法  
  20. -(int) update:(Note*)model;  
  21. //查询所有  
  22. -(NSMutableArray*) findAll;  
  23. //根据主键查询数据的方法  
  24. -(Note*) findById:(Note*)model;  
  25.   
  26. @end  

备忘录业务逻辑类:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2. #import "NoteDAO.h"  
  3.   
  4. /*! 
  5.  *  备忘录业务逻辑类 
  6.  * 
  7.  *  @since V1.0 
  8.  */  
  9. @interface NoteBL : NSObject  
  10.   
  11. //插入备忘录方法  
  12. -(NSMutableArray*) addNote:(Note*)model;  
  13. //删除备忘录的方法  
  14. -(NSMutableArray*) removeNote:(Note*)model;  
  15. //查询所有方法  
  16. -(NSMutableArray*) findAll;  
  17.   
  18. @end  

3 结语

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

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

0 0
原创粉丝点击