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類的。