上一篇主要做了MAKA APP的需求分析,功能结构分解,架构分析,API分析,API数据结构分析。

这篇主要讲如何从零做iOS应用架构。

 

 

全系列

 

【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇

 

【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

 

【HELLO WAKA】WAKA iOS客户端 之三 创作模块分析与实现篇(上)

 

【HELLO WAKA】WAKA iOS客户端 之三 创作模块分析与实现篇(下)

 

【HELLO WAKA】WAKA iOS客户端 之四 服务器架构设计

 

 

1.  iOS客户端架构

按照功能模块划分。这里可以使用二层设计也可以使用三层设计。MVC, MVCS, MVVM, MVP, VIPER, DDD, 洋葱模型等。理论补充可以自行google。

个人倾向三层设计。由于PL层使用DDD方式还没完全掌握,所以暂时使用VM来替代DDD。降级为二层设计+MVVM。

1) DAL。使用ReactiveCocoa。采用响应式编程。

2) BLL。这层使用DDD。但是还没有使用熟练,所以暂时还是使用VM来替代DDD。这样其实降级为二层设计

3) PL。使用MVVM+MVC模式。比较复杂的界面使用MVVM模式,简单界面还是使用MVC模式。

【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

 

下图是按照功能结构的划分。

【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

2. 工程结构

二层设计 + 按模块划分 + MVVM

 

【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

 

3. DAL层之API设计

1. 库使用:AFNetworking + ReactiveCocoa + AFNetworking-RACExtensions。采用响应式编程方式。

2. 类设计。

   1)使用单件模式。只通过访问MKAPIClient类来访问接口。保持接口统一访问,参数统一配置。

   2)使用类扩展的方式。既保证各模块代码分类又保证了访问的统一性,并且容易横向扩展。

   3) 面向函数编程。

   4)面向响应编程方式。参考:http://reactivex.io

   5)面向轨道编程方式(应该是非正式名称)。参考:面向轨道编程 - Swift中的异常处理

   

【HELLO WAKA】WAKA iOS客户端 之二 架构设计与实现篇

 

 用户接口模块定义

 1 @interface MKAPIClient (User)
 2 
 3 /**
 4  *  用户注册
 5  *
 6  *  @param email    邮箱
 7  *  @param password 密码
 8  *
 9  *  @return 信号
10  */
11 - (RACSignal *)registWithEmail:(NSString *)email password:(NSString *)password;
12 
13 
14 /**
15  *  用户登陆
16  *
17  *  @param email    邮箱
18  *  @param password 密码
19  *
20  *  @return 信号
21  */
22 - (RACSignal *)loginWithEmail:(NSString *)email password:(NSString *)password;
23 
24 
25 /**
26  *  忘记密码
27  *
28  *  @param email 邮箱
29  *
30  *  @return 信号
31  */
32 - (RACSignal *)forgetPasswordWithEmail:(NSString *)email;
33 
34 
35 /**
36  *  用户信息
37  *
38  *  @return 信号
39  */
40 - (RACSignal *)userInfo;
41 
42 /**
43  *  修改用户信息
44  *
45  *  @param key   字段
46  *  @param value 值
47  *
48  *  @return 信号
49  */
50 - (RACSignal *)updateUserInfoWithKey:(NSString *)key value:(NSString *)value;
51 
52 @end
用户模块定义

相关文章: