2016-05-18 6 views
1

今、私はC++アプリケーションを開発しています。インスタンスを共有するという問題に直面しています。シングルトンパターンを使用せずに、C++でいくつかのクラス間でインスタンスを共有する方法

この問題では、簡単なクラス図を作成しました。クラスAとクラスCのHogeDataManagerを共有したいと考えています。AはHogeDataManagerを作成し、パブリックメソッドを介してHogeDataを読み込みます。 BはHogeDataManagerにデータを追加します。

HogeDataManagerを共有するためには、BとCのset_mgrメソッドを用意する必要があります。しかし、それは賢明ではないと思います。もちろん、私がシングルトンパターンを採用すれば、それは解決されます。しかし、シングルトンは時には危険ですので、私はそのような問題を避けるためのより良い方法を探したいと思います。 AはHogeDataManagerを作成し、に、唯一まだ、BまたはCが責任を持つオブジェクトの決定を、行方不明C. にBにそれを引き継ぎ、およびB:

enter image description here

+0

_ "HogeDataManagerを共有するために、set_mgrメソッドを準備する必要があります。これらのクラスのコンストラクタ。 –

+0

シングルトンを避ける特別な理由はありますか? – teivaz

+0

'HogeDataManager'の使用シナリオ、その存続期間、インスタンス、コンテキスト、状態の可能な数を修正する必要があります。これにより、より良い決定を下すのに役立ちます。 – teivaz

答えて

0

あなたのデザインが良いです最後にHogeDataManagerを破棄します。 もし、AがHogeDataManagerを作成して破壊する必要があるならば、BとCにunset_mgr()が必要です。

関連する問題