protocol 协议的向后隐藏

http://www.olinone.com/?p=429

看下面的代码



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@protocol ApiServiceProtocol <NSObject>
 
- (void)requestNetWithUrl:(NSURL *)url Param:(NSDictionary *)param;
 
@end
 
@interface NSObject (ApiServiceProtocol) <ApiServiceProtocol>
 
@end
 
@implementation NSObject (ApiServiceProtocol)
 
- (void)requestNetWithUrl:(NSURL *)url Param:(NSDictionary *)param {
    ApiService *apiSrevice = [ApiService new];
    apiSrevice.url = url;
    apiSrevice.param = param;
    [apiSrevice execNetRequest];
}
 
@end
这段代码刚开始看到 时候,发现实现该协议(方法1)和不去实现该协议直接写成自己的方法(方法2),不一样所有的NSObject可以访问?

这样想确实是,回头再想想,如果采取方法2 是不是接口需要暴露在.H中,采用方法1接口不需要暴露在,只包含相应的protocol,做实现判断即可,以后是谁现实的不关心。


第二部分


下面的APIserver protocol 是否多余?

目前看是多余的。

但考虑,如果对外还有数据统计,这时候怎么发送,如果APIServer 同事也实现了数据统计发送协议,一个对象就可以全部搞定

要不ApiServicePassthrough还需要再增加一个 实现datastatistic 协议的对象。

这块不一定正确,只是个人的想法。

@protocol ApiServiceProtocol <NSObject>


- (void)requestNetWithUrl:(NSURL *)url Param:(NSDictionary *)param;


@end


@protocol ApiService <ApiServiceProtocol>


// private functions


@end


@interface ApiServicePassthrough : NSObject


@property (nonatomic, strong) NSURL        *url;

@property (nonatomic, strong) NSDictionary *param;


- (instancetype)initWithApiService:(id<ApiService>)apiService;

- (void)execNetRequest;


@end




阅读更多
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页