問題タブ [passive-view]
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.
model-view-controller - Model-View-Controller に代わるものはありますか?
大学に通い、SO の開発を追っているうちに、Model-View-Controller アーキテクチャ デザイン パターンについて多くのことを耳にしました。MVC パターンが何であるかを理解する前に、うっかり MVC パターンを使用してしまい、今でも毎日の仕事で使用しています。私が見た限りでは、これはおそらく今日使用されている最も人気のあるパターンです。私があまり聞いたことがないのは、MVC の代わりに使用できる代替パターンです。どのようなオプションがあり、どのような理由で MVC よりもそれらを使用することにしますか? また、それらが使用される典型的なシステムの種類を知りたいと思っています。最後に、それらを使用することに伴う長所と短所は何ですか?
javascript - 2つのJavaScriptオブジェクトを結び付ける正しい方法は何ですか?
私は現在難問に直面しています: 2 つの JavaScript オブジェクトを結び付ける正しい方法は何ですか?
いくつかの異なるファイルを持つテキスト エディターのようなアプリケーションを想像してみてください。ノートブックのビューを表す HTML ページがあります。NotebookController と Notebook View のクラス定義を含むファイル notebook.js があります。
「ノートブックの保存」、「ノートブックの読み込み」、「新しいノートブック」など、ノートブックでのビジネス ロジックの実行を担当する NotebookController オブジェクト。NotebookView は、プレゼンテーションに使用される HTML の管理を担当します。「ノートブック本体の取得/設定」「ノートブック名の取得/設定」などの低レベルの処理を行います。また、DOM イベント (onClick) をリッスンし、ビジネス イベント (saveNotebook) を起動します。これは、パッシブ ビュー パターンでの私の試みです。
JavaScript のクライアント側コードを、オブジェクト指向で、懸念事項を分離し、単体テストできるようにしたいと考えています。モック NotebookView を使用して NotebookController をテストしたい、またはその逆を行いたい。つまり、NotebookController 内で NotebookView をインスタンス化することはできません。私もそうです
- 2つを結び付けるロジックをnotebook.jsに入れます
- それぞれの 1 つをインスタンス化し、それらを一緒に配線することを知っているアプリケーションにグローバル関数を用意する
- 自家製のものか SquirrelIoc のような依存性注入を使用します。
Java では、Spring を使用するという自然な選択があります。しかし、それはあまり JavaScript 風ではないようです。どうするのが正解?
asp.net-mvc - Microsoft が ASP.NET に MVC を選んだのはなぜですか?
30 年間のパターンであることに加えて、MVC は現在のアプリケーション向けではありませんでした。MVP はその後継で、90 年代に登場したイベント ベースのアプリを処理するように設計されています。Passive View と Supervising Controller がトップに躍り出たようです。この 2 つについては、MVC/MVP について話す必要はほとんどありません。
具体的には、そのビューを作成するビューを戻す ASP.NET MVC のコントローラー アクションですか? MVC では、コントローラーはビューを作成したり、それらに話しかけたりしません。ASP.NET MVC を MVC 実装と呼ぶのはどのくらい正確ですか? または、それの正確な名前は何ですか?
law-of-demeter - パッシブビューはデメテルの法則に違反しますか?
パッシブビューを正しく使用する方法を理解しようとしています。パッシブビューで見るすべての例は、デメテルの法則に違反しているように思われます。
では、パッシブビューのより良い実装は何ですか?
c# - TreeView コントロールから MVP プレゼンターに階層データを公開するにはどうすればよいですか?
Winforms TreeView コントロールにいくつかの階層データがあり、それをプロパティとして公開して、プレゼンターが変更を同期できるようにする必要があります。明確にするために、私はパッシブ ビューパターンを使用しています。ほとんどの WinForm コントロールでは、これは簡単です。コントロール自体は、プレゼンターに簡単に渡すことができるシステム タイプとしてデータを公開します。TreeViews は、複雑であるため、システム タイプに簡単にマップできません。フレームワーク コレクション型を探しましたが、ツリー型は見落とされているようです。(Microsoft は、いくつかの高レベル クラスの内部でツリー構造を使用しているように見えますが、汎用ツリークラスのファミリーを作成しないことを選択しました。)
いずれにせよ、私が公開しようとしているデータの深さは 2 ノードを超えないため、TreeView を使い続けるかどうかさえわかりません。さらに、プレゼンターを TreeNodeCollection に結び付けることを避ける必要があります。
私はすでにいくつかのアイデアを思いつきましたが、SO コミュニティからそれらを跳ね返したかっただけです。
- ツリーをコレクションのコレクションとして公開します...リストの辞書としましょう。
- カスタム ツリー構造を作成し、プロセス内のビューに依存関係を導入します。
最上位ノードは平均 5 ~ 10 エントリで、子ノードは理論的には 50 ものヒット数を達成できますが、実際には 3 または 4 を超えることはありません。
助言がありますか?
c# - プレゼンターは、ユーザーに詳細情報の入力を求める必要があります。どうすれば配線できますか?
パッシブビューパターンを使用しています。ユーザーが新しいアカウントボタンをクリックします。ビューは、パラメーターなしのメソッド呼び出しを使用して、プレゼンターに責任を委任します。
問題は、複数のアカウントタイプがあるため、ユーザーは作成するアカウントタイプを選択する必要があることです。これを解決するにはどうすればよいですか?
- ビューから新しいフォームを作成し、必要な情報を取得して、プレゼンターが取得できるようにプロパティとして公開します。(これは、ビューにロジックが含まれていてはならないという概念を無視します)
- プレゼンターから新しいフォームを作成して使用します。(これは、MVPの全体的なポイントを無視して、プレゼンターをフォームに直接結び付けます)
- 新しいフォームを別の場所に作成し、コンストラクター引数としてプレゼンターに渡します...またはビュー。
- それを忘れて、アカウントタイプごとに新しいボタンを追加してください。(アカウントの種類はいくつかあり、UIが乱雑になりますが、そうなります。)
- 私はこれを間違った方法で行っているので、私のデザインを再考する必要があります。(この場合、正しい方向に少しずつ動かしていただければ幸いです。)
c# - UserControlをMVPパターンのフォームにアタッチするにはどうすればよいですか?
MVPパターンを使用して一種のマスター/詳細UIを作成しようとしています。私にはいつもの容疑者がいます:
また、独自のMVPトライアドのビューでもあるUserControlがあります。
MainPresenterはSubPresenterのインスタンスを作成し、SubPresenterはSubViewのインスタンスを作成します。私の問題は、ビューに相互の参照が含まれていないか、相互が存在することさえ知らないことです。彼らは自分のプレゼンターについてしか知りませんが、UserControlである1つのビューを、フォームである別のビューにアタッチしたいと思います。これは、各ビューの互いの無知を実行し、維持することは可能ですか?
この時点まで、すべてのビューで各プレゼンターが必要とするプロパティがシステムタイプとして公開されていたため、ListBoxがComboBoxまたはRadioGroupに変更されてもプレゼンターは影響を受けません。可能であればこのままにしておきたいのですが、他に選択肢がない場合は、このパターンを破るつもりです。
これを行う理由は、MainViewがユーザーにオブジェクトのコレクションを表示するためです。各オブジェクトは、いくつかの(50を超える)異なるクラスの1つにすることができます。すべてが共通のインターフェースを実装しますが、各オブジェクトを操作するためのUIは、基礎となるクラスによって異なります。
ちなみに、これは.NET 2.0を対象としたWinformsアプリケーションです(ただし、C#3.0としてコンパイルされています)
java - モデル ビュー プレゼンターと複合ビュー
Java swing ui アプリケーションで MVP (具体的には Passive-View) パターンに従おうとしています。
アプリケーションの基本設計は、ウィザード コントロールを連想させます。画面は次の 2 つの主要部分に分かれています。
- アクティブなビュー。
- ナビゲーション ボタンを備えた静的なナビゲーション バー。
ユーザーはボタンを使用してアクティブ ビューを変更できますが、バーは常に表示されます。
このシナリオをモデル化すると、それぞれが独自のプレゼンター、ビュー インターフェイス、およびビュー実装 (JPanel を使用) を備えた、さまざまなスクリーンがたくさんあります。次に、JFrame を使用して、シェル プレゼンター、ビュー インターフェイス、およびビューの実装を作成します。アイデアは、シェルが最初に読み込まれ、常に表示され、下部のナビゲーション バーが表示され、アクティブなビュー用のスペースが残されるというものです。シェル プレゼンターを使用すると、現在アクティブな画面を次のように設定できます。
問題は setActiveView メソッドにあります。 View インターフェイスが一般的で JPanels について何も知らない場合、activeView を activePanel に設定する方法がわかりません。明らかに、プレゼンターに JPanels についても知られたくありません。
design-patterns - パッシブビューパターンでの子ビューの作成
テスト容易性を向上させるためにパッシブビューパターンを使用することに非常に興味がありますが、子ダイアログを呼び出す方法がわかりません。
親ビューで子ビューを作成し、親コントローラーにインターフェイスを返し、次に親コントローラーで子コントローラーを作成しますか?