メッセージタイプの基本クラスをパラメーターとして受け取る「通知」メソッドを持つプロセスがあります。メッセージの派生型に基づいて異なる処理をしたいと思います。これは、「プロセス」と呼ばれるメソッドまたはメッセージ タイプに似たものを追加し、ポリモーフィズムを使用して呼び出す必要があるということですか? 特定のメッセージ タイプごとに「通知」を追加する方がよいでしょうか。
詳細: 言語は C++ です。ここでは通知を使用することをお勧めします。これにより、さまざまなメッセージの種類を通知するメソッドが 1 つだけで済みます。コントローラーは、純粋な viual notify(MsgBaseClass) メソッドを指定するリスナー クラスから継承します。新しいメッセージの種類ごとに通知を追加する必要がないので、私は今でもそのアイデアを気に入っています。しかし、コントローラ コード自体では、動的キャストやメッセージ タイプのメッセージへの追加以外に、メッセージ タイプを区別する方法がわかりません。
編集: 訪問者パターンを使用すると思います。これにより、通知用のメソッドを 1 つだけ保持でき、コード内の switch ステートメントを回避できます。「ビジター」インターフェースは、さまざまな派生メッセージ・タイプを処理するためにリスナーが必要とするさまざまなメソッドを指定します。これには、純粋な仮想 "accept(MyMessageTypeVisitor v)" という 1 つのメッセージのみを Message ベース クラスに追加する必要があります。派生メッセージ クラスは、v.visit(this); を使用してそれを実装します。
これはうまくいくはずだと思います。