【发布时间】:2011-01-22 10:26:32
【问题描述】:
我想知道以下哪一项是面向服务设计的 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 的不同实现。
所以我的问题是选择哪种风格,为什么?
谢谢。
【问题讨论】:
标签: objective-c software-design