如何通过多个类传递类?

时间:2012-01-06 22:42:38

标签: c++ design-patterns

我的游戏中有一个名为Core的课程,其中大多数经理都在这里。他们到这里是因为我的所有资源,语言数据,位图,声音都会在游戏启动时被管理员加载。

之后,创建场景管理器并初始化第一个场景。

问题在于将数据从上层类共享到较低级别的类,例如场景。

当场景开始时,它需要从管理器请求位图和声音。大多数场景还需要根据语言查找按钮以放置按钮。

我这样做的方法是拥有一种Manager经理类。它由大多数场景使用的每种类型的管理器构成。这将传递给场景管理器,该管理器将指针传递给当前场景。

这意味着每次有新经理时,我都需要更改Manager经理的构造函数并更改场景管理器中的一些内容。

有更好的方法吗?这种事情通常是怎么做到的?

谢谢

3 个答案:

答案 0 :(得分:2)

最常见的方法是使用单身人士。仅仅因为它很常见,并不意味着它是最好的方式。

另一种做同样事情的方法是dependency injection。类的构造函数将指向它所需的管理器。这样可以在一个地方收集所有依赖项,并且可以轻松地将测试代码替换为任何管理器。

答案 1 :(得分:0)

对于全局可用的功能和数据,我建议您使用单例模式。 如果您需要为不同的场景提供不同的数据,您应该考虑使用多单例(将字符串传递给getInstance函数)或编写一个接口,该接口具有通过字符串/名称(如java中的Property类)访问数据的功能。

答案 2 :(得分:0)

拥有一个包含所有经理的单身class Root。在初始化期间,Root对象构造所有管理器。然后,您可以为所有经理添加获取功能。

这非常有效,因为您可以在代码中的任何位置调用

Root::getPtr()->getTextureManager()->whatever()