2016-05-18 60 views
1

現在我正在開發一個C++應用程序,而且我正面臨共享一個實例的問題。如何在C++中的幾個類之間共享一個實例,而不是使用單例模式

對於這個問題,我創建了一個簡單的類圖。我想分享A類和C的HogeDataManager。創建HogeDataManager並通過其公共方法讀取HogeData。然後B向HogeDataManager添加一些數據。

對於共享HogeDataManager,我必須爲B和C準備set_mgr方法。但我認爲這不是一個聰明的方法。當然,如果我採用Singleton模式,它將被解決。但Singleton有時很危險,所以我想找到更好的方法來避免這樣的問題。

enter image description here

+0

_「對於共享HogeDataManager,我必須準備set_mgr方法」_最好是在這些類的構造函數。 –

+0

你有什麼特別的理由避免單身? – teivaz

+0

您應該修改使用'HogeDataManager',它的生命週期,實例,上下文和狀態的可能數量的場景。這會幫助你做出更好的決定。 – teivaz

回答

0

你的設計是好的: A創建HogeDataManager,並採取它交給B和B到C. 只缺尚未決定,其中對象A,B或C的責任,最後破壞HogeDataManager。 如果您需要,A必須創建並破壞HogeDataManager,那麼您需要在B和C中使用unset_mgr()。

相關問題