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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值