- 其实一直在纠结。若第三方框架在我们项目中多处地方被使用到,而这个框架又经常更新,若出现更新说:此次更新,修改了之前的什么大bug。若更新之后,造成了我们的项目,无法运行,那么我们要修改的地方就非常多,因为前期对这个框架过分的依赖。怎么办?一个个去找,去修改,那代价是惨重的。
- 那么如何避免这种情况呢,让这些经常更新,经常变动的框架对我们的项目的影响将到最低呢,我们想,若这个框架只影响到我们项目的一处地方就好了,那么这个问题就迎刃而解了
- 我们现在拿AFN来做个试验,因为我们的项目中,很多地方都会出现对服务器请求数据的情况,所以多次地方都会引用到AFN这个框架,那么我们这时候想,自定义一个Tool来专门管理加载数据的,然后项目里边就只用到我们自定义的这个Tool来加载数据就行。看看如何写:
ZYHttpTool.h
#import <Foundation/Foundation.h>
@interface ZYHttpTool : NSObject
+ (void)get:(NSString *)url params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure;
+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure;
@end
ZYHttpTool.m中
#import "ZYHttpTool.h"
#import "AFNetworking.h"
@implementation ZYHttpTool
+ (void)get:(NSString *)url params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure
{
//创建请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//发送请求
[manager GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success)
{
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (error)
{
failure(error);
}
}];
}
+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure
{
//创建请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//发送请求
[manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success)
{
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (error)
{
failure(error);
}
}];
}
- 这样我们的项目中,就只需要引用我们的类就行。而控制器里面对AFN一点也不关心,你删除了AFN他都不知道。现在若AFN出现了很大的变动,那么只会影响到ZYHttpTool。那么到时候我们只需要修改这个文件就行。