我有一个 XML 解析器,它将解析 17 个不同的 XML 文档(我正在对此进行简化)。 当解析器完成其工作时,它会调用发出请求的对象。
第一种方式
一个看起来像的方法
- (void)didReceiveObject:(NSObject *)object ofType:(MyObjectType)type
MyObjectType 是一个枚举。
在这个方法中,我检查了类型并将对象重定向到相应的方法。
第二种方式
我可以接收的 17 种类型的对象中的每一种都有一个回调方法。
- (void)didReceiveFoo:(MYFoo *)foo
- (void)didReceiveBar:(MYBar *)bar
... and so on
哪种使用委托(delegate)的方式会更好? 我们与一位同事就此进行了讨论,但找不到比另一种更有吸引力的方法。它似乎只是决定从解析器或委托(delegate)中调用什么方法....
即使在考虑添加 future 的方法/委托(delegate)回调时,我们也看不到任何真正的问题。
这些方法中的一种比另一种更好吗?还有别的办法吗?
最佳答案
为什么不一起去
- (void)didReceiveObject:(NSObject *)object
然后检查类类型?
这对我来说似乎更清晰且更具可扩展性,因为这意味着您可以在将来解析其他对象而无需添加更多回调。
(我知道这与选项一相同,但我想指出您的第二个参数是不必要的。)
关于objective-c - 调用委托(delegate)的数据提供者 : specifics or generic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832039/