0

ユーザー構成に従ってオブジェクトをロード (および管理)する一種のマルチトンクラス (マネージャー デザイン パターンとも呼ばれる)を実装したいと考えています (マルチトン内の各オブジェクトのキーは、構成レコードの主キーです)。構成の変更が検出されると、これらのオブジェクトは破棄され、再作成 (つまり、再ロード) されます。

他のオブジェクト (管理対象オブジェクトの外部) は、これらの「管理対象」オブジェクトと対話/通信します。

たとえば
、ManagerA は ClassA の構成済みインスタンスのインスタンスを管理します。ObjectB は ManagerA を介して ClassA のインスタンスを取得し、インスタンスとの対話を開始します。

問題は、ObjectB と ClassA のマネージ インスタンス間の対話が、ManagerA が ClassA のインスタンスを破棄し、(新しく変更された構成用に) ClassA の新しいインスタンスを作成するスレッドとは別のスレッドにある可能性があることです。つまり、マネージド インスタンスは、マネージド オブジェクトとの対話と同じように (またはその直前に) 破棄できます。

私の質問は、インスタンス管理と外部オブジェクトによるこれらのマネージド インスタンスとの対話をどのように同期させるべきかということです。

4

1 に答える 1

0

これは、コードや疑似コードなどが提供されていないため、かなり困難ですが...

クライアントがアクションをキューに入れることによって管理対象プロトコルオブジェクトと対話し、そのアクションのキューが管理対象プロトコルオブジェクトの存続期間が長い場合は、そのキューを管理対象プロトコルから分離し、キューへの参照を渡す方がよいでしょう。クライアントへのオブジェクトのように。

何かがキューに入れられたら、キューのようなオブジェクトに適切に構成されたプロトコルオブジェクトをチェックアウトさせて使用します。使用中(バイトがネットワーク上を飛んでいることを意味します)は、変更/構成できないと思います。その1つのアクションが完了したら、キューのようなオブジェクトを作成し、プロトコルオブジェクトをマネージャーにチェックインします。チェックイン時に、マネージャーが構成の変更を検出した場合は、プロトコルオブジェクトを破棄して再作成できます。そうでない場合は、マネージャーはまだそこに座って、次の使用に備えることができます。構成の変更が検出されたときにオブジェクトが現在チェックアウトされていない場合、そのレクリエーション手順をすぐに実行できます。

クライアントはプロトコルオブジェクトに直接アクセスしないため、これらの詳細から保護されます。(それが要件である場合でも、プロトコルオブジェクトにチェックインとチェックアウトの概念を適用して、それらが最新であることを確認できますが、クライアントがチェックインを忘れることができるため、強制するのは困難です。および再チェックアウト)。

于 2012-09-27T20:55:22.427 に答える