質問

私の研究との違いこれら二つのパターン

理解しているファサードカプセル化へのアクセスのサブシステム停カプセル化の相互作用ます。

理解しているサブシステム部品についてご存知ないのではないでのファサード、部品としては明らかに認識しmediator.

私は現在使用のためのファサードを封入の検索方法設定情報などアプリです。Config、ユーザー設定を保存アプリケーションで、組み立てといった情報など、仲介ナビゲーションのためのコンパイル。

しかし、ほとんどのサイトは、ジャンムー-カシミールの調停"機能".会が与えられる。どのような仲介機能を追加して?

役に立ちましたか?

解決

...ほとんどのサイトは、ジャンムー-カシミールが仲介者"の追加機能"が...

ファサード のみ公開の既存の機能とは異なる視点で

仲介 "追加"機能で組み合わせ、既存の機能を新規作成します。

次の例を参考にして下さい

お持ちのロギングシステム。そのロギングシステムではログファイル、ソケットまたはデータベースです。

のファサードデザインパターンだ"非表示"のときから既存の機能の裏手にシングル"インターフェイス"のファサードに公開.

クライアントコード:

 Logger logger = new Logger();
 logger.initLogger("someLogger");
 logger.debug("message");

この実装では相互作用の多くのオブジェクト。その機能は既に存在しています。その"デバッグ方法"には次のように実装されます:

実施:

 class Logger { 

      private LoggerImpl internalLogger;
      private LoggerManager manager;

      public void initLogger( String loggerName ) {
          this.internalLogger = manager.getLogger( loggerName ); 
      }

      public void debug( String message ) { 
          this.internalLogger.debug( message );
      }     
 }

の機能はすでに存在しています。のファサードを隠します。この仮説の場合には、LoggerManagerの作成は、正しいロガーのLoggerImplはパッケージの民間のオブジェクトの"デバッグ方法である。そうすることによって、ファサードな機能の追加な委譲を行う一部の既存のオブジェクト。

その他の媒介者の追加、新機能を組み合わせの異なるオブジェクト。

同じクライアントコード:

 Logger logger = new Logger();
 logger.initLogger("someLogger");
 logger.debug("message");

実施:

 class Logger { 

      private java.io.PrintStream out;
      private java.net.Socket client;
      private java.sql.Connection dbConnection;
      private String loggerName;


      public void initLogger( String loggerName ) {
               this.loggerName = loggerName;
               if ( loggerName == "someLogger" ) { 
                    out = new PrintStream( new File("app.log"));
               } else if ( loggerName == "serverLog" ) { 
                    client = new Socket("127.0.0.1", 1234 );
               } else if( loggerName == "dblog") { 
                    dbConnection = Class.forName()... .
               }

      }

      public void debug( String message ) { 

               if ( loggerName == "someLogger" ) { 
                    out.println( message );
               } else if ( loggerName == "serverLog" ) { 
                    ObjectOutputStrewam oos = 
                           new ObjectOutputStrewam( client.getOutputStream());
                    oos.writeObject( message );
               } else if( loggerName == "dblog") { 
                    Pstmt pstmt = dbConnection.prepareStatment( LOG_SQL );
                    pstmt.setParameter(1, message );
                    pstmt.executeUpdate();
                    dbConnection.commit();
               }
      }
 }

このコードでは、仲介者の一つが含まれるビジネスロジックの適切な"チャンネル"にログインしていますが、さらなるにはログインしています。仲介人には"創造"は可能です。

もちろん、より良い方法への適用の多型が、ここでのポイントはどのように仲介者"に加え"新たな機能を組み合わせ、既存機能の私のサンプルさんもんが想像の仲介、から読み取られデータベースのリモートホストがログインし、クライアントを作成し、最後に書き込みうクライアントから印刷ストリームのログメッセージ。このように仲介する"媒介"との異なるオブジェクト。

最後に、 ファサード は構造パターンの受け付けたいと思います。を記述する構成のオブジェクトの 仲介 は行動していることを説明しての物体との交流を図っています。

この助けになっていますよ。

他のヒント

私が使っている仲介者の追加のログファイル可能です。

この作品のようになります:

  • Objが、この仲介者でも行われます。
  • 仲介人に送るメッセージに様々な顧客のオブジェクト。
  • Obj億いものObjのニーズをするときは、適切なメッセージ裏面のmediator.
  • 一方、Objは送の両方のメッセージにより、媒介者は、ログ。そうやって、ユーザー統計からログファイルです。
  • Obj DできるエラーチェッカーなどでObj Bに対応したObjの要請は不可能で、Obj Dできるようにという報告を追加しました。誤差が可能にログインの異なるファイルは通常の活動のような他の手段で行動する(beepingいるObj、だんに配慮します。

関連パターンの下で、 GOF を言う:それがオブジェクトのサブシステムを抽象化することでファサード(185)はメディエータとは異なりより便利なインタフェースを提供します。そのプロトコルは一方向です。つまり、ファサードオブジェクトはなく、その逆のサブシステムクラスの要求を行います。これとは対照的に、メディエータは、同僚のオブジェクトがまたは提供することはできませんしないことが協調行動を可能にし、そしてプロトコルが多方向である。

トラナ

ファサード:のような駐車場着

parkingLot.Out(car1);

モノクローナル抗体の簡単なチェーン製作所

{
  car1.StartEngin();      
  attendant.charge();
  car1.driverOut();
}

仲介業者ののように課題と可能性を確認する。

との間に相互作用があ光や車

自動車の制御です。

私はおそらくこの 仲介者"機能"


の定義:

ファサードの型: 構造

媒介者のタイプ: 行動

ファサードに対する関心が高まり 部品含まれる統一されたインタフェース,

は、仲介者の懸念 どのよう セットオブジェ との交流.

私は区別は、方向性だと思った:ファサードは、クライアントとフロントの間で一方向通信です。仲介者は、メッセージがクライアントと仲介者の間で前後に流れると、双方向の会話することができます。

次のように

「デザインパターン」の本から、MediatorパターンのKEYが記載されています。 「それ(メディエーター)はウィジェットのための通信のHUB(相互依存のオブジェクト、すなわち、 『』群)として作用する。」

言い換えれば、メディエーターオブジェクトは、オブジェクトを協力し、どのように彼らはお互いに相互作用すべきであるのグループ内の他のすべてのオブジェクトを知っている唯一のsuperobjectです。他のすべてのオブジェクトではなく、お互いの、メディエーターオブジェクトと対話する必要があります。

サブシステムの消費者による使用のために - -

これとは対照的に、ファサードは、サブシステム内のインタフェースのセットは、「統一されたインタフェース」である。れないサブシステムの構成要素のうち

ごらんくださいファサードパターンをこのSEの質問:

うなファサードデザインパターン?

Facade 単純な機能統合型インタフェースの複雑なシステム。

実例cleartripフライト+ホテル予約※この記事:

うなファサードデザインパターン?

仲介 パターン:の定義をカプセル化するオブジェクトからのオブジェクトとの交流を図っています。仲介を推進しゆったり結合をオブジェかつ互いに明確にできなりその相互作用。

現実の世界に例のメッシュネットワークトポロジーが提供されて以下のSEの質問:

仲介Vsオブザーバオブジェクト指向デザインパターン

に関するお問い合せ仲介を追加責任

  1. ファサードの提供を心がけ、インターフェースは既存のプロセッサーのパフォーマンス.既存のプロセッサーのパフォーマンスについてご存知ないのではないでファサードはクラス自体です。

  2. 仲介について知ってい仲間物.可能とすることとします。この例でい引用リンク、 ConcreteMediator(NetworkMediator)通知が送信されますの登録および登録は解除イベントの同僚、その他すべての面談です。

両るかのような政策は他のグループをサポートします。 ファサード 課の方針から、上記の 仲介 課の政策からです。の利用 ファサード 可視および制約などからの利用 仲介 はなく、目に見えない可能.

ファサード パターンを使用して簡単に、特定のインターフェースオブジェクトのグループと複雑さらに一般的なインタフェース.

仲介 パターンにおいても、課ます。しかし、ファサードに課その政策目に見えるの制約などから、 仲介 課にその方針を隠し、自由闊達なのです。

アジャイルソフトウェアの開発、原則パターンとトレンド、およびその実践Robert C.マーティン.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top