在 C++ 中,有一个模板方法惯用语,基类实现了它的所有算法,但排除了一些微小的差异(通常必须处理数据格式等),以便子类以 protected 虚方法的形式实现,而这些方法不是层次结构客户端可访问。
在 Objective-C 中表达相同习语的最自然方式是什么?
谢谢。
最佳答案
我会创建一个带有类别的单独头文件。您可以将该类别命名为 Protected
:
@interface MyClass(Protected)
// Place your "protected" methods here.
@end
普通类用户不会#import
这个文件,只有主类文件。但是实现和子类也会 #import
包含 Protected
类别的头文件。
如果这些方法是可选的,您可以改为使用协议(protocol):
@protocol MyClassProtected
// Required methods here.
@optional
// Optional methods here.
@end
我觉得这个解决方案不如类别,但它会起作用。
然后,第三种方法就是简单地避免约定俗成:相应地命名您的 protected 方法:
@interface MyClass {
}
// This method is not to be called by users, but subclasses may
// overwrite to do something else.
- (void) protected_someMethodDoingFoo;
@end
关于c++ - 在 Objective-C 中表达 C++ "protected virtual"习语的自然方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956988/