問題タブ [mediator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 循環参照を取得せずに Delphi でメディエーター パターンを実装する
Mediator パターンに精通している方は...
Delphi で Mediator パターンを実装したいのですが、Delphi コンパイラは必要な循環参照を処理できません。
「デザイン パターン」の元の GOF ダイアグラムを見ると、Mediator は各 Colleague への参照を持っていますが、Colleague オブジェクトの多くは Mediator への参照を持っています。
これはほとんどの言語では問題になりませんが、Delphi コンパイラから「F2047 Circular unit reference to ...」というメッセージが表示されます。
インターフェイスを使用したこのアプローチは役に立ちますか? (複雑そうです)
Delphi 2010 を使用しています
【ソリューションの概要】
受け入れられた回答を要約すると、循環参照を許可する言語では、抽象的な Mediator クラスを省略できます (278 ページの GoF の「実装」セクションで説明されているように)。抽象 Mediator クラスを使用せずに Delphi で Mediator を実装できる唯一の方法は、すべてのクラスを 1 つの Unit に含めることです。
それ以外の場合は、具体的なサブクラスに加えて、追加の抽象 Mediator 基本クラスが必要です。
3 つのユニットの Uses 句は次のようになります。
ConcreteColleage1は Mediator
を使用 ConcreteMediator は Mediator を使用、ConcreateColleague1
は Mediator (どちらも使用しない)
循環参照禁止!
java - GUIメディエーターでの同時変更例外をどのように克服できますか?
参考までに、Swing on Java の GUI にメディエーター パターンを採用しました。
残念ながら、ユーザー入力が新しいウィンドウを必要とする場合、同時変更例外が常にスローされます。
これは、私のコードが、既存の同僚 (ウィンドウ) からのユーザー入力を処理する過程で、メディエーターの同僚のリストに新しい同僚 (新しいウィンドウ) を追加しようとするためです。
例えば
私が採用できる新しい同僚の追加を処理するための他の構造はありますか? 提案やアイデアをお寄せいただきありがとうございます。
c++ - Mediator C++GUIサンプル
@ webのどこかで、GUIコンポーネントを操作するMediatorの優れたC++の例を見つけることができると聞きました。しかし、私は、そのGoFサンプル、または私にとって役に立たないソーシングメイキングなどからのものだけを見つけるように管理しました。
それで...あなたはその言及されたGUIサンプルがどこにあるか知っていますか?
そのような質問で申し訳ありませんが、それは他の人にも役立つ可能性があります。
design-patterns - Eventbusはメディエーターまたはオブザーバーパターンですか?
Eventbusはメディエーターまたはオブザーバーですか?Googleによると、「eventbusメディエーター」は2.430ヒット、「eventbusobserver」は3.850ヒットです。
説明から、それらは両方とも私がやろうとしていたことと一致するでしょう(メディエーターはもう少しです)。それで、eventbusは特定のパターンを実装しますか、それとも私が言うのは私次第ですか?
design-patterns - メディエーターのパターンと作成
相互に対話する必要があるプレゼンテーションに関連する「ウィジェット」がいくつかありますが、相互作用は、相互作用を処理する新しいオブジェクトを保証するのに十分なほど複雑になっています。
メディエーターをそのオブジェクトとして処理しようとすると、参加者を効果的に構築する方法がわかりません。メディエーターはウィジェットについて認識している必要があり、ウィジェットはメディエーターについて認識している必要があります。
以下のおもちゃのクラスを使用して、コンストラクターがどのように見えるか、およびそれらが通常どのような順序で作成されるかを誰かが示すことができますか?
乾杯、
ベリル
wpf - 異なるライブラリのViewModelsとViews間のメディエーターパターン
私はイタリア人なので、言葉が悪いのでごめんなさい。
私はMVVMベースのアプリケーションに取り組んでいます。私のソリューションには、単一のWPFアプリケーションプロジェクトMs、Vs、およびVMが含まれています。ビューとViewModelの間のメディエーターとして、Applicationクラスのプロパティとして作成されたRegisterメソッドとNotifyColleaguesメソッドを持つMessengerクラスを使用します。
これまではすべて問題なく機能し、M、V、VMを異なるライブラリに分割することにしました。このシナリオでは、Messengerクラスを実行可能ファイルのApplicationクラスに入れることができなくなります。これは、ライブラリがMessengerクラスに接続できないためです。
だから私は何をすべきですか?私の場合により適した別のメディエーターパターンがありますか、それとも何かが足りませんか?
ありがとう=)
java - メディエーターパターンを使用したNetbeansプラットフォームプロジェクト-可能ですか?
NetBeansプラットフォームのモジュラーアプリでメディエーターデザインパターン(http://en.wikipedia.org/wiki/Mediator_pattern)を使用したいと思います。ただし、メディエーターを作成して各モジュールに挿入する良い方法がないように思われるため、起動時にこれを行う方法がわかりません。
誰かがこれを行うための良い方法を知っていますか?Lookup APIなどを使用する必要がありますか?
flash - Flex4 ホスト コンポーネントにはビュー メディエーター/ヘルパーと同じ機能がありますか?
Robotlegs/PureMVC から来て、私はビュー メディエーターの概念にかなり精通しています。つまり、「ダミー」ビューからのイベント/リクエストをほとんどリッスンし、さらにリクエストを行い、アプリケーション全体のシグナル/イベントを送信するコンポーネントです。 、ビューからの要求に基づいてコマンドなどを実行します。
Flex 4 で導入されたホスト コンポーネントの概念は、メディエーターと同じと見なすことができますか? 少し気になるのは、ホスト コンポーネントが引き続きビューと見なされることです。これは、ホスト コンポーネントが SkinnableComponent またはそれをさらに継承するクラスを拡張するためです。私の見解では、メディエータはビュー ロジックから完全に除外されるべきです。
それにもかかわらず、スキン、ホスト コンポーネント、およびそのホスト コンポーネントのビュー メディエーターを作成したくありません。
ホスト コンポーネントをメディエーターとして使用し、そこにアプリケーション レベルのロジック (アプリケーション レベルのイベント ディスパッチなど) を配置する必要がありますか?
javascript - Mediator Pattern in JavaScript Questions
I'm creating a sort of library based on the mediator for my work. We create lots of applications so I wanted something that can easily be taken and modified on a per app basis. I also want it to be easy enough to create "widgets" (for lack of a better term) and easy to remove them without worrying about breaking anything. Many of these apps we make are also extendable by outside developers making apps or widgets for the apps.
That's how I came across the mediator pattern. I wrote up something that works something like this:
I have 3 questions tho:
How do/should you deal with DOM manipulation in this pattern with JavaScript? I don't want developers messing with the DOM outside of their widget.
How do/should you deal with AJAX requests. Should you do anything at all? Should you just offer a AJAX/JSONP call in the library (
Core
in this example).My biggest question, how do you actually interact with other widgets? I don't want to tight couple (obviously), but I don't get how you'd interact with another widget. For example, let's say you have a text box and on submit it sends it to a DB. How can another widget, lets call it the "timeline" widget, now when it was submitted and then update the timeline with the text from the text box widget?
===UPDATE===
I ended up writing this:
flash - PureMVC メディエーターとビュー - 作成と制御
フラッシュ AS3 と puremvc を使用してアプリを作成していますが、ビュー メディエーターを正しく処理する方法がちょっとわかりません...
OK - 3 つまたは 4 つの異なるビューがあり、それぞれが独自のメディエーターによって管理されています。各ビューは単独でのみ表示されます。1つが表示されている/ステージ上にある場合-他のものは非表示/ステージから削除されています(単純化されていますが、一度に1つずつ表示される個別のページと考えることができ、ナビゲーションバーにより、ユーザーは好きなときにビューを変更できます)
最初に、私が作成してステージに追加した各ビューメディエーターは、独自のビューコンポーネントであるため、そのビューを表示または非表示にする「ターン」のときは、ビューコンポーネントの addChild と removeChild が簡単でした。
しかし、私は puremvc.org で、それは良い習慣ではないことを読みました。ステージを通過します(私の場合、これは各メディエーターのviewComponentでした-各ビューが追加された場所-たとえば、viewComponent.addChild(foo)b.独自のビューを作成します-これにより、最初にそれを追加および削除できました.
そこで、推奨される方法に変更しました。各メディエーターを作成するときに渡すのは、それが管理するビュー コンポーネントです (ステージ/メイン ドキュメント クラスではなく)。
例えば。
そのため、必要に応じて各ビューを削除/追加する方法がわかりません。各メディエーター内から可視性を簡単に設定できましたが、それを避けたかったのです-リソース管理に使用されていないときは削除することを好みます...
誰もがこれについて私がどのように「意図されている」かの良いアイデアを手に入れました(たとえば、ステージでビューが不要になった場合は、一時的に削除し、後で必要になったときに追加しますか?)-または私はいくつかの点が欠けていて (かなりの可能性があります!)、これについて間違った方法で行っていますか? 私は puremvc に非常に慣れていないので、正しくアプローチしているとは確信していません。ポインタは大歓迎です!