我对Objective-C比较新,我有一个带有相应数组字符串描述的枚举:
typedef enum {
kCoverage = 0,
kSingulation,
kPopulation,
kDownforce,
} MapTileType;
static NSString* const kMapTileTypeString[] = {
[kCoverage] = @"Coverage",
[kSingulation] = @"Singulation",
[kPopulation] = @"Population",
[kDownforce] = @"Downforce",
};
我发现我实际上需要为地图图块的“类型”定义行为。例如,我有一个适用于特定类型的地图图块的图块渲染行为。
static RenderingStrategy* const kMapTileTypeRenderingStrategy[] = {
[kCoverage] = ...,
[kSingulation] = ...,
...
};
我想知道所有这些东西是否更适合用于封装目的的类定义。或者我只使用接收MapTileType
的工厂方法并返回RenderingStrategy
?
我在想,我也许也可以只使用代表:
@protocol MapTileDelegate <NSObject>
-(NSString*)description;
-(void)renderBlahBlah...;
@end
有人可以帮助打破我的分析瘫痪吗? :)
答案 0 :(得分:1)
在不知道更多的情况下,有两种听起来有意义的方法:
将MapTileTypes转换为MapTile的子类,以实现您正在寻找的自定义行为。
沿着这些行创建一个MapTileBehavior类,并让该类的实例取代MapTileTypes值。