【发布时间】:2013-07-27 23:02:57
【问题描述】:
我看了一些关于类簇模式的资料,接下来就明白了:
公共集群类只提供接口,没有实际实现,其他类根据不同情况实现;
它与抽象工厂模式有一些相似之处:当我们调用方法
+classNameWith...时,它可以根据参数选择最合适的子类并返回它。
例如,+[NSNumber numberWithDouble:1.0],将返回用于存储双精度值的实现。
但我不明白的是:-init... 公共集群类的方法如何工作:
[[NSNumber alloc] initWithDouble:1.0],因为在调用alloc 之后它已经分配了NSNumber 的实例,而不是它的子类。
那么,谁能解释一下公共集群类的alloc-init 方法的实际工作原理,以及具体子类何时实例化并返回?
【问题讨论】:
-
您可能有兴趣仔细阅读GNUStep version of NSNumber.m。
-
乔什·卡斯威尔,感谢您提供的精彩链接!
标签: ios objective-c design-patterns