34

大学に通い、SO の開発を追っているうちに、Model-View-Controller アーキテクチャ デザイン パターンについて多くのことを耳にしました。MVC パターンが何であるかを理解する前に、うっかり MVC パターンを使用してしまい、今でも毎日の仕事で使用しています。私が見た限りでは、これはおそらく今日使用されている最も人気のあるパターンです。私があまり聞いたことがないのは、MVC の代わりに使用できる代替パターンです。どのようなオプションがあり、どのような理由で MVC よりもそれらを使用することにしますか? また、それらが使用される典型的なシステムの種類を知りたいと思っています。最後に、それらを使用することに伴う長所と短所は何ですか?

4

10 に答える 10

27
  1. パッシブ ビュー - http://martinfowler.com/eaaDev/PassiveScreen.html
  2. 監視コントローラー - http://martinfowler.com/eaaDev/SupervisingPresenter.html
  3. モデル ビュー プレゼンター - http://martinfowler.com/eaaDev/ModelViewPresenter.html

私の個人的なお気に入りはPassive Viewです。MVC など、私が見た他のものよりもテスト可能です。

于 2008-08-23T19:03:06.900 に答える
5

MVC を含むその他のアーキテクチャ パターン。

階層化されたシステム

TCP/IP

オブジェクト指向組織

Model-View-ControllerPresentation-abstraction-controlModel View Presenter、およびModel View ViewModel

例としては、ASP.NET の MVC、Ruby on Rails などがあります。

イベントベースの暗黙的な呼び出し

ブラウザー環境 (DOM)

パイプとフィルターのアーキテクチャ

Unix パイプ

リポジトリ

テーブル駆動インタープリター


ソフトウェア アーキテクチャに関する Garlan & Shaw の論文も参考になるかもしれません。

もう 1 つの注目すべきリンクは、Wikipediaのアーキテクチャ パターンに関する記事です。

于 2010-07-02T08:35:54.133 に答える
4

ビューがモデルのデータの変更をリッスンし、それに応じてレンダリングを変更し、モデルのメソッドがビューのイベント ハンドラーにバインドされている、C を使用しない MVC をときどき見ました。

ビューが必然的にデータと密接に結合しているプロジェクト (モデルまたはモデルの属性に直接関連するビジュアル コンポーネントがある場合など) では、「仲介者」を排除するため、これはかなり役立ちます。

ただし、これはまだ MVC であり、単なるハイブリッド バージョンであり、ビューとモデルの間に確立されたバインディングはコントローラー ロジックであると主張する人が多いと思います。

于 2008-08-23T19:08:12.550 に答える
4

Model-View-Presenter がありますが、MVC の最も一般的な "代替" は、実際には適切な分離の欠如であることがわかると思います。極端な例として、HTML、VBScript、および SQL が同じファイルに並んでいる従来の ASP ページについて考えてみましょう。(これは ASP のばかげたものではありません — 他の言語でそのような例をたくさん見つけることができます。)

于 2008-08-23T19:09:49.957 に答える
4

上記の答えはかなり正しいですが、ソフトウェアを作成するすべての人々の 90% が「デザイン パターン」という言葉をまったく知らないことに注意することがより重要だと思います。彼らはコードを書き始めたばかりです。

課題は、最適な設計アプローチを選択することではなく、設計に価値があることを他の人に納得させることです。

于 2008-08-23T20:14:26.060 に答える
2

まあ、今はかなり古いです。もう1つ言及したいと思います(追加の知識のための情報のために)PresenterFirstpatrernです

これについての詳細は次のとおりです。

http://en.wikipedia.org/wiki/Presenter_First

http://www.atomicobject.com/pages/Presenter+First

HTH

于 2010-10-31T13:25:13.070 に答える
1

Presentation-Abstraction-Control(PAC)ファミリーのパターンで、インターフェース/相互作用はエージェントの階層によって処理されます。

ウィキペディアの記事は素晴らしいものではありません http://en.m.wikipedia.org/wiki/Presentation-abstraction-control

于 2010-07-02T08:09:47.487 に答える
1

Lift Web フレームワークでは、View First アプローチを使用します。基本的に、ビューは 1 つ以上のスニペット (コントローラーに多少似ています) で構成され、スニペットはネストできます。これは、HTML および Scala の組み込み XML 処理機能と非常にうまく連携します。

于 2010-07-02T08:13:06.717 に答える
0

現在の ASP.NET フレームワークを使用して独自の MVC を展開しても、ポストバック モデルを維持できます。

http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx

于 2009-05-21T20:47:47.843 に答える
0

オブザーバーパターンはどうですか。私が間違っていなければ、MVC は Smalltalk に導入され、その後いくつかのパブリッシュ/サブスクライブ パターンが出現しました。

オブザーバー パターン (パブリッシュ/サブスクライブ パターンのサブセット) は、サブジェクトと呼ばれるオブジェクトがオブザーバーと呼ばれるその従属オブジェクトのリストを保持し、状態の変化を自動的に通知するソフトウェア設計パターンです。彼らの方法の。主に、分散イベント処理システムの実装に使用されます。

例 : 保存するデータがある場合にのみ、エディターで [保存] ボタンが有効になります。オブザーバー パターンのもう 1 つの例は、MFC のドキュメント ビュー アーキテクチャで、ドキュメントが変更されるとビューが更新されます。

于 2011-04-21T05:42:24.727 に答える