1

我正要开始将一个相对较大的游戏从iPhone Obj-C移植到平台中立的C++。在我们的游戏中,我们大量使用NSNotificationCenter来通知我们服务器的菜单和下载游戏项目以及缓存更新。将NSNotificationCenter设计模式移至C++进行移植?

我正在考虑使用单例类重新创建NSNotificationCenter,然后让任何接收通知的类继承使用多继承的NotificationReceiver基类。单身人士会保留通知名称的Map,以保持指向基类的指针数组。当通知被发送时,它会在可能被覆盖的接收器的基类中调用一个虚拟成员。

有没有更好的设计模式在C++中用于这种类型的操作?

会有更好的实现方法吗?

回答

1

会有更好的实现方法吗?

是 - 没有必要强制执行,如果你使用如继承一个特定的接口:

还请记住,如果您只需要通知中心的单个实例it doesn't need to be a singleton

+0

为什么它不需要是单身?我能想到的唯一的其他选项是使其成员和函数全部是静态的......如果我不想使用默认类型(如在Obj-C中所做的那样),单例模式还可以让我创建其他通知中心, 。 – David 2012-07-08 16:45:00

+1

@David:如果您需要对特定实例进行全局访问,那么您可以通过静态方法等使用全局访问或便捷访问来解决问题 - 很少有必要强制将类限制为只有一个实例。 – 2012-07-08 16:48:35

+0

@David:同样值得注意的是'NSNotificationCenter'也不是单身人士 - 你可以访问不同的实例,它只是提供了对进程默认通知中心的方便访问。 – 2012-07-08 16:56:06

1

除了上述的boost包,另一个选项是poco::NotificationCenter

此实现更接近于可可通知框架,作为在波索的documentation具体讨论:

的通知中心类基本上是一个C++实现在苹果的可可(或OpenStep的)中发现的 NSNotificationCenter类的。