C ++共通コンポーネント - オブジェクトメッセージバスライブラリ

C ++共通コンポーネント - オブジェクトメッセージバスライブラリ

メッセージバスの紹介

、依存性、会合、凝集、継承および組成順次関係が強化されているカップリング:一般にオブジェクト間の関係です。オブジェクト間のより一般的な関連は、依存参照と継承です。大規模なソフトウェア開発プロセスでは、多数のオブジェクト、関係は、これらのオブジェクト間の関係を管理するための統一、簡単な方法は非常に複雑であり、そうでない場合は、関係は、背中のメンテナンスにリード蜘蛛の巣のようなオブジェクトにつながる可能性があります難しいです。オブジェクトまたは参照間の直接の依存性は依存性、複雑な参照関係につながる、インタフェース依存関係が強い結合され、要件をローに満足していないカップリング。したがって、技術的な解決策は、オブジェクト間の、あまりにも複雑な関係、強い結合の問題です。

効果的に、ベースのメッセージ・バス技術だけメッセージを介してオブジェクト間のリンクをこれらの問題を解決するのではなく、直接、または関連付けによって依存することができます。メッセージバスの複雑なオブジェクトの関係を簡素化し、複雑さを軽減するだけでなく、プログラムの保守性を向上させ、ターゲットのうち関係の複雑なネットワークの中から私たちを解放します。

メッセージ・バスでは、オブジェクトはメッセージ、オブジェクト間の関係であるというメッセージによってリンクされている、我々は唯一のオブジェクト間でどのような具体的な関連性を気にすることなく、メッセージバスでこれらのメッセージを管理する必要があり、それが統一された管理に簡単です。オブジェクト間だけでいくつかのニュースに依存しているため、何の直接的な依存関係はありません大幅にオブジェクト間の結合を低減、2つのオブジェクト間の任意の関係なしに、また、排除対象物との間のカップリング、継承する必要はありません。

キーメッセージ・バス技術

(1)共通メッセージの定義は
、本質的に、メッセージバス技術は、すべてのオブジェクトが受け入れることができるように、したがって、メッセージを介して接触するすべてのオブジェクトを作るために、共通のメッセージ・フォーマットを定義する必要があるされています。
登録(2)メッセージ
のすべてのオブジェクトが対象のメッセージに署名できるようにします。
(3)は、メッセージ配信
すべての受信者が受信できるようにメッセージを配信するためのメッセージ・バスを介して、プロセスメッセージを

メッセージバスのデザインのアイデア

図バスタイミングメッセージ

ここに画像を挿入説明
図から分かるように、サブジェクトとオブジェクトのオブジェクトが関連付けられていない場合、それらが接触しているメッセージ・バスを介して起こります。ターゲット導入メッセージバスビューワ対応する次のステップに送信されるメッセージ。
1)視聴者登録メッセージ本体にバスメッセージを、メッセージ本体は、登録の目的に関連する呼び出し可能な追加された文字列型は、適切な場合、メッセージのこのタイプを受信するようになっています。
2)保存メッセージバスは、オブザーバーのメッセージ本文を登録しました。
3)オブジェクトに関連するメッセージ・バスにメッセージを送信し、メッセージタイプは、呼び出し可能オブジェクト戻り列プラストピックの種類があります。
4)メッセージタイプのオブジェクトをテーマにしたメッセージ・バスは、視聴者が興味のあるすべてのメッセージを見つけるために私を送りました。
視聴者には5)メッセージバスメッセージ放送。
6)メッセージビューワを処理します。

図クラスのメッセージ・バス

ここに画像を挿入説明
クラス図から見ることができ、メッセージバスを達成するのは比較的簡単です。いくつかのオブジェクトのクラス図では、以下の表情。

  • コピー不可:それから派生する必要がある、コピーされているクラスを防ぐために。その導入について、読者は以前の8.2を参照することができます。
  • MessageBus:メッセージバスシステムがメッセージを削除するメッセージ、およびメッセージ配信機能を追加する必要がすべてのメッセージを維持する責任があります。前記空隙は、(F && F、CONST文字列&strTopic =「」)を取り付け、登録メッセージは、空に関するデフォルトの文字列型のオブジェクトに観察するためのものである、空隙削除(CONST文字列&strTopic =「」)メソッドは、メッセージを削除するために使用され;無効SENDREQ(引数&& ... argsを、constの文字列&strTopic =「」)オブジェクトに関連するメッセージを送信するために利用可能であるが、主題のデフォルトの文字列のタイプは空です。
  • オブザーバー:オブザーバオブジェクトは、メッセージ送信されたメッセージ・バスを受け取り、処理します。
  • Observer_Fcuntion:メッセージボディ、あなたがオブジェクトを呼び出すことができますが、実際に内部オブザーバオブジェクトの関数です。
  • 件名:テーマオブジェクトは、オブジェクトは、メッセージバスにメッセージを送信します。

メッセージバスの実装

githubのプロジェクトアドレス

公開された155元の記事 ウォン称賛15 ビュー160 000 +

おすすめ

転載: blog.csdn.net/wangdamingll/article/details/105127569