0

我只是想确保我正确使用了类方法。

举例来说,假设我正在创建一个包含单个地图和该地图上的单个图块(例如,16 x 16 块)的游戏。

每个图块可以由建筑物、树木、道路等组成——这可以在整个游戏中发生变化。

我是否正确地设置一个带有类方法的 Map 类来初始化地图,仅仅是因为只有一个地图并且我不需要实例化多个地图?

我是否也可以使用实例方法设置一个 Tile 类来初始化瓷砖,因为会有 256 个瓷砖,每个瓷砖都有自己的属性?

努力解决这一切,任何建议将不胜感激。

4

2 回答 2

1

有多种模式可以处理这个问题,但基本上归结为这个Map类是一个单例。有些人更喜欢通过禁止创建多个实例来强制类的单例性(例如,通过隐藏构造函数,或使构造函数抛出异常等)。Map在其他情况下,只需将类记录为单例并照此使用就足够了。

在 Objective-C 中处理单例的一种简单方法是创建一个类方法来实例化它,即:

static Map* defaultMap = nil;
+ (Map*) defaultMap {
    if(!defaultMap) defaultMap = [[Map alloc] init];
    return defaultMap;
}

对地图使用类方法可能不是一个好主意,就像全局变量通常应该减少到最低限度一样(尽管上面的示例实际上是一个全局变量,但重构一次代码会容易得多您需要多张地图)。

于 2013-02-04T01:30:29.243 回答
0

地图类可以实现为单例模式。或将其限制为仅 1 个共享实例的任何其他方式。

于 2013-02-04T01:34:55.973 回答