仲介モデルの役割をしっかりオブジェクトとオブジェクトの間の関係を持ち上げるように結合され、それはまた「メディエーター」として知られています。すべてのオブジェクトは、オブジェクトが変更されたときに、あなたが唯一の仲介者に通知する必要があり、むしろ相互に参照するよりも、仲介者を介して通信するためのオブジェクトです。
以下のような:空港管制塔、各航空機管制塔とのみ通信する必要があり、コントロールタワーが離陸、各航空機の飛行状態を知っているし、着陸など、ルートを調整するために、すべての時間を手配することができます
デメテルの法則、知識の最小の、すなわち原則に沿った中間モデルは、オブジェクトの他のオブジェクトのわずかな理解であるべきであることをいいます。オブジェクト間の結合が高すぎる場合は、オブジェクトを変更するには、それが、維持が困難多くのオブジェクトに影響を与えます。オブジェクトは非常に密結合である場合、オブジェクトが他のオブジェクトに影響を与えずに変更することは非常に困難です。
オブジェクト間の複雑な結合が呼び出しの結果と経験豊富な困難を維持するが、プロジェクトの結合度を持つこれらの変化が指数関数的に成長していない場合、我々は、コードを再構築するために、仲介モデルの使用を考慮することができます!コードの保守性を改善するためにデカップリングすることによってメディエータ。
//演奏家オブジェクトはプレイヤー()コンストラクタによって作成されているが、独自の名前と属性のポイントがあります。この方法は、分以上、その後、通知ブローカを追加する責任がある()プロトタイプを再生する: 関数プレーヤー(名){ これは = 0 .points ; この .nameの= 名; } Player.prototype.play = 関数(){ この .pointsを= 1 +。; mediator.played(); };
// coreboardオブジェクト(スコアボード)はupdate()メソッドを持っている各プレイヤーが終了した後、それは仲介者に呼び出します。総分析は、それが分数来るのメディエータ表示するための責任があり、スコアを保存しない、選手について何も知らなかった のvarスコアボード= { のdocument.getElementById(:要素 [結果] )、 :更新機能(スコア){ VAR、私を= MSG '' ; のための(I におけるスコア){ IF (score.hasOwnProperty(I)){ MSG + = '<\ / strong>の<P>の<strong>' + I + ':' ; MSGは、 + = [スコアI]; MSG + = '<\ / P>' ; .element.innerHTML = MSG。 } }。
// 今、私たちは、オブジェクトメディエーター(仲介者)を見てください。ゲームの初期化は、その後、セットアップ()メソッドでプレーヤーを作成し、後で使用するときのプロパティの後に選手を置きます。()メソッドは、各ラウンドでプレイヤーになり、コールの後に終了する演奏
// それが得点して、ハッシュテーブルを更新し、表示のためにスコアボードの上にそれを通過しました。最後の方法は、KeyPressイベント()、、プレイヤーがプレイしている人を決め、処理キーボードイベントを担当していると、それを通知 するvarメディエータ= { {}、:プレーヤー セットアップ:関数(){ VARの選手= この.players; players.home = 新新プレーヤー( 'ホーム' ); players.guest = 新新プレーヤー( 'ユーザーレビュー' ); }、 再生:機能(){ VARの選手= この .players、 スコア = { ホーム:players.home.points、 ゲスト:players.guest.points }。 scoreboard.update(スコア)。 }、 キー押下:関数(E){ E = E || window.event; // IE 場合(e.which === 49){ // キー"1" mediator.players.home.play()。 返します。 } であれば(e.which === 48){ // キー"0" mediator.players.guest.play()。 返します。 } } }。
そして、ゲームが初期化されている //が行く! Mediator.setup(); window.onkeypress = mediator.keypress; // で30秒以上のゲーム のsetTimeout(関数(){ window.onkeypress = ヌル; アラート( '!ゲームオーバー' ); }、 30000)。
https://www.cnblogs.com/susufufu/p/5808433.htmlより転載