我想知道以下哪一项是面向服务设计的 Objective-C 中的正确用法/实现:
第一个版本特定于静态语言,使用协议(接口):
//
// get the cloud service from our service provider
//
id<CloudServices> myService = [ServiceProvider serviceWithProtocol:@protocol(CloudServices)];
第二个版本不使用协议,依赖于 Objective-C 实际上是动态的这一事实:
//
// get the cloud service from our service provider
//
CloudServices *myService = [ServiceProvider serviceWithClass:[CloudServices class]];
显然不同之处在于 CloudServices 是一个接口或协议,我们暗示可以将 ServiceProvider 配置为返回 CloudServices 的不同实现。
所以我的问题是选择哪种风格,为什么?
谢谢。