問題タブ [mvp]
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.
java - MVP パターンを JDialogs に適用する
私は Swing アプリケーションを作成しており、前の質問に加えて、Model-View-Presenterパターンを使用してユーザー インターフェイスをビジネス ロジックから分離することにしました。
アプリケーションが起動すると、次のコードが実行されます。
ユーザーインターフェイスを作成します。イベントは によって生成され、View
に委譲されPresenter
ます。その後Presenter
、 は を操作し、それに応じてModel
を更新しますView
。
一部のイベントを処理するには、ユーザーからさらに情報を取得する必要があります。これらのイベントの場合、Swing ビューが新しいJDialog
ウィンドウを生成するのが適切だと思います。
1行の考え方で、これがオリジナルの適切なコードである可能性があると感じさせますPresenter
:
つまり、それぞれのコンテンツは、から取得してで更新するJDialog
必要がある個別のオブジェクトを表す必要があります。ただし、これには疑問が残ります。オブジェクトを表すために new を作成し、その中でイベント処理のために new を作成する必要がありますか?View
Model
Model
Preferences
Presenter
JDialog
たとえば、JSF を使用するように UI を変更したい場合、元の内部に新しいものを作成するPresenter
と、移植が難しくなる多くの作業を強いられるように思えます。Model
View
明確にするためにコメントを追加してください。
model-view-controller - MVC/MVP/MVPC では、ビジネス ロジックをどこに配置しますか?
MVC/MVP/MVPC 設計パターンでは、ビジネス ロジックをどこに配置しますか? いいえ、ASP.NET MVC Framework (別名 "Tag Soup") のことではありません。
MVC/MVPCの「Controller」や「Presenter」に入れるべきだという人もいます。しかし、モデルの一部であるべきだと考える人もいます。
どう思いますか、なぜですか?
.net - Web Client Software Factory (WCSF) と Smart Client Software Factory (SCSF) のプレゼンターはどのように共有できますか?
Web Client Software Factory (WCSF) と Smart Client Software Factory (SCSF) はどちらも MVP パターンを使用します。
M -モデルを共有できます。
V -View は、両方とも異なるプラットフォーム (デスクトップ/Web) 上にあるため、異なる必要があります。
P- Presenter を共有できるか、それとも両方をまったく同じにできるか、どのように共有できるかを知りたいです。
web-services - リッチ ドメイン オブジェクトをサービスとして公開する
ドメイン オブジェクトをクライアントに公開する方法に頭を悩ませようとしています。リッチ クライアントを使用している場合でも、Web を使用している場合でも、MVP とリポジトリ パターンを使用したいと考えています。
私が理解しようとしているのは、サーバー上にあるリポジトリとモデルを公開する方法です。状態を持つ複雑なビジネス オブジェクトを Web サービス経由で公開することは可能ですか? それとも、.Net リモーティング、EJB、COM+、DCOM など、言語/プラットフォームにとらわれない独自のテクノロジを使用する必要がありますか?
他のいくつかの制約は、複雑なドメイン オブジェクトをデータベースからロードし続けたり、操作を実行するたびにネットワーク全体に渡したりしたくないということです。いくつかの複雑なロジックは、オブジェクトの状態と組み合わせたユーザーのアクセス許可に基づいて、画面の特定の領域が無効または非表示になる可能性があることです。検証およびエラー メッセージ情報もユーザーに表示する必要があります。同じマシン上で実行されているかのように、多くのドメイン オブジェクト操作を論理的に呼び出すことができるようにしたいと考えています。
Web を使用すると、自由に制御できます。サービスの境界を越えてオブジェクトを公開する必要がないため、必要に応じてオブジェクトをリッチにすることができます。モデルを呼び出すクライアントが別のマシン上にある場合に機能する、リッチで機能する N-teir アーキテクチャを作成しようとしています。
model-view-controller - MVP パターン: 複数のプレゼンターを分離する必要がありますか、それとも直接通信できますか?
次のようなUIがあります。
この UI を駆動するためにMVP パターンを使用しています。
ここではかなり単純化していますが、分割して征服するために、Presenter を 2 つに分割したいと思います。1 つは、左側のビューでユーザーのジェスチャーを処理します (ユーザーは、このビューでモデル リストを変更します。たとえば、並べ替え)。もう 1 つのプレゼンターは、右側のビューでユーザー ジェスチャを処理します (ユーザーは、このビューで個々のモデルを変更します)。
左側のプレゼンターはモデルのリスト全体とやり取りしますが、右側のプレゼンターは単一のモデルのみとやり取りします。つまり、ユーザーが左側のリストから選択したモデルです。IOW UI は左から右に駆動されます。
ユーザーが左側のモデルを選択 (つまり、クリック) すると、現在の実装は (大まかに) 次のようになります。
これは、MVPパターン、またはその問題に関するMVC GUIパターンに関して、私が曖昧な部分です。
- このように、UI を複数のプレゼンターで操作できますか?
- 複数のプレゼンターを分離する必要がありますか、それともここに示すように互いに直接通信できますか?
だから私の質問は次のようになります:ユーザーがのビューでモデルを選択したことを示す最良の方法は何RightPresenter
LeftPresenter
ですか?
c# - ORM を使用する .NET 用の「優れた基幹業務アプリケーション」の例が必要
TDD、ORM、モッキングなどに移行しようとしています。ORM できれば NHibernate を使用する基幹業務アプリの良い例が必要です。
オープン ソースであり、リポジトリ パターンを使用する必要があります。
私は例から最もよく学びます。私はリポジトリ パターンと作業単位パターンをいじりましたが、意味のあるアプリケーションではありませんでした。
IoC (Unity を使用)、WCF、Workflow Foundation、WPF、Smart Client Software Factory、Webclient Software Factory などに精通しています。
私はすべての「基本」を学びました(それらは基本と呼ばれるかなり高度なプリンシパルです、IMO)。すべてをまとめることができないようです。
私たちが作成するアプリケーションは、アーキテクチャに関するすべての「ベスト プラクティス」に従います。ビジネス ロジック層、データ アクセス層、MVP、MVVP、MVC などがあります。しかし、私たちの BLL にはコードはありません。
すべてのビジネス ロジックがどこにあるのかを自問する必要があります。
おそらくデータ アクセスの 95% はストアド プロシージャを介して行われており、それがすべてデータベースであると想定する必要があります。これらの SP の一部は巨大で、非常に多くの if ステートメント、case ステートメント、および場合によってはカーソルを持っています。
上で述べたように、私はこれらすべての優れたテクノロジの使用方法を知っていますが、それらを使用しているのは、SQL Server 用の非常に複雑で過度にアーキテクチャ化されたレポート ツールを作成することだけのようです。
ALT.NET がより良い方法である場合、すべてのビジネス ロジックをコードに含める方がより良い方法である場合、適切な方法ですべてをまとめるオープン ソース アプリケーションが存在する必要があります。
wpf - この WPF の例を MVC、MVP、または MVVM に対してさらに分離するにはどうすればよいですか?
この WPF アプリケーションのイベントを次のように分離しました。
デカップリングを続ける最善の方法は何ですか?
Shell.xaml:
Bootstrapper.cs:
Shell.xaml.cs:
Customer.cs:
上記のコードShell
は、モデルからビューを正常に分離するため、独自の方法で「処理済み」を処理Customer:IPerson
するモデルなどにスワップできます。Employee:IPerson
それが最初の目標でした。
でも今:
Processed
ビューでイベントを発生させる MenuItem または ListView とも通信でき、それを呼び出す要素である必要さえないように、メソッドを Buttonとの通信から切り離すにはどうすればよいですか、例えば単体テストクラス?- 送信者 (ボタン) 以外のビューの他の要素を変更するにはどうすればよいですか?たとえば、シェルのステータス バーを変更するにはどうすればよいですか? 2 つの方法があります。
- すべてのビューを保持するコンテナーを構築し、作成時にコンテナーを Customer に挿入することもできます。その後、顧客はコンテナーを調べて、呼び出し元のビューを必要に応じて操作できます (ただし、イベントを送信したビューと何らかの方法で一致させる必要があります)。コンテナ内のビューは同じものとして)
- イベントを発生させるときに、イベント引数を使用してビュー全体 (Window オブジェクト) をモデルに送信することもできますが、モデルには、実行時に操作できる領域の種類を (インターフェイスを介して) 知る何らかの方法が必要です。
- このアプリケーションを、よりデカップリングされた設計の方向にどのように継続しますか?
- これは、MVC、MVP、MVVM など、実際にはどのようなパターンですか? ビュー (シェル) とモデル (顧客) しか表示されません。
- プレゼンターはどのように適合しますか?
- ViewModel はどのように適合しますか?
- コントローラーはどのように適合しますか?