【发布时间】:2012-08-27 13:10:26
【问题描述】:
我只是想学习目标-c。
我在维基百科上看到过AbstractFactory 模式的示例,涵盖不同的语言。
这里是按钮定义:
@protocol Button
- (void)paint;
@end
@interface WinButton : NSObject <Button>
@end
这是一家工厂:
@implementation WinFactory
- (id)createButton {
return [[[WinButton alloc] init] autorelease];
}
@end
据我所知,obj-c 的 id 关键字应该类似于 C# 的 var 或 C++11 的 auto,
对吧?
所以我的问题是:
为什么要让工厂返回一个未指定类型的通用对象? 这是一个错误(让工厂返回其他不是按钮的东西)还是有任何理由这样做?
我会这样写一个工厂:
@implementation WinFactory
- (id<Button>)createButton {
return [[[WinButton alloc] init] autorelease];
}
@end
我错了吗?
【问题讨论】:
标签: objective-c abstract-factory