假设我在Cocoa中编写一个类来充当服务器的代理。要表示连接的当前状态,请考虑枚举:
enum
{
MyConnectionStatusDisconnected = 0,
MyConnectionStatusConnecting,
MyConnectionStatusConnected,
MyConnectionStatusCount
};
typedef NSUInteger MyConnectionStatus;
我可能会把它放在我的代理类中,如下所示:
@interface ServerProxy : NSObject
{
MyConnectionStatus connectionStatus;
}
这没关系,但是如果我想找出用户可读的连接状态解释怎么办?我可能有这样的静态函数:
+(NSString*)statusStringForInt:(MyConnectionStatus)status;
此时我很快就离开了面向对象编程的领域。
将此枚举重构为类层次结构的最佳方法是什么?
答案 0 :(得分:1)
我不会将它重构为类层次结构。相反,使用NSString常量:
// foo.h
extern NSString *MyConnectionStatusDisconnected;
// foo.m
MyConnectionStatusDisconnected = @"Connection Status: Disconnected";
isEqualToString:
将指针相等作为第一个测试,因此速度很快。
如果您需要进行本地化,则可以在字符串文件中使用Connection Status: Disconnected
。