大学に通い、SO の開発を追っているうちに、Model-View-Controller アーキテクチャ デザイン パターンについて多くのことを耳にしました。MVC パターンが何であるかを理解する前に、うっかり MVC パターンを使用してしまい、今でも毎日の仕事で使用しています。私が見た限りでは、これはおそらく今日使用されている最も人気のあるパターンです。私があまり聞いたことがないのは、MVC の代わりに使用できる代替パターンです。どのようなオプションがあり、どのような理由で MVC よりもそれらを使用することにしますか? また、それらが使用される典型的なシステムの種類を知りたいと思っています。最後に、それらを使用することに伴う長所と短所は何ですか?
10 に答える
- パッシブ ビュー - http://martinfowler.com/eaaDev/PassiveScreen.html
- 監視コントローラー - http://martinfowler.com/eaaDev/SupervisingPresenter.html
- モデル ビュー プレゼンター - http://martinfowler.com/eaaDev/ModelViewPresenter.html
私の個人的なお気に入りはPassive Viewです。MVC など、私が見た他のものよりもテスト可能です。
MVC を含むその他のアーキテクチャ パターン。
階層化されたシステム
TCP/IP
オブジェクト指向組織
Model-View-Controller、Presentation-abstraction-control、Model View Presenter、およびModel View ViewModel。
例としては、ASP.NET の MVC、Ruby on Rails などがあります。
イベントベースの暗黙的な呼び出し
ブラウザー環境 (DOM)
パイプとフィルターのアーキテクチャ
Unix パイプ
リポジトリ
テーブル駆動インタープリター
ソフトウェア アーキテクチャに関する Garlan & Shaw の論文も参考になるかもしれません。
もう 1 つの注目すべきリンクは、Wikipediaのアーキテクチャ パターンに関する記事です。
ビューがモデルのデータの変更をリッスンし、それに応じてレンダリングを変更し、モデルのメソッドがビューのイベント ハンドラーにバインドされている、C を使用しない MVC をときどき見ました。
ビューが必然的にデータと密接に結合しているプロジェクト (モデルまたはモデルの属性に直接関連するビジュアル コンポーネントがある場合など) では、「仲介者」を排除するため、これはかなり役立ちます。
ただし、これはまだ MVC であり、単なるハイブリッド バージョンであり、ビューとモデルの間に確立されたバインディングはコントローラー ロジックであると主張する人が多いと思います。
Model-View-Presenter がありますが、MVC の最も一般的な "代替" は、実際には適切な分離の欠如であることがわかると思います。極端な例として、HTML、VBScript、および SQL が同じファイルに並んでいる従来の ASP ページについて考えてみましょう。(これは ASP のばかげたものではありません — 他の言語でそのような例をたくさん見つけることができます。)
上記の答えはかなり正しいですが、ソフトウェアを作成するすべての人々の 90% が「デザイン パターン」という言葉をまったく知らないことに注意することがより重要だと思います。彼らはコードを書き始めたばかりです。
課題は、最適な設計アプローチを選択することではなく、設計に価値があることを他の人に納得させることです。
まあ、今はかなり古いです。もう1つ言及したいと思います(追加の知識のための情報のために)PresenterFirstpatrernです
これについての詳細は次のとおりです。
http://en.wikipedia.org/wiki/Presenter_First
http://www.atomicobject.com/pages/Presenter+First
HTH
Presentation-Abstraction-Control(PAC)ファミリーのパターンで、インターフェース/相互作用はエージェントの階層によって処理されます。
ウィキペディアの記事は素晴らしいものではありません http://en.m.wikipedia.org/wiki/Presentation-abstraction-control
現在の ASP.NET フレームワークを使用して独自の MVC を展開しても、ポストバック モデルを維持できます。
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
オブザーバーパターンはどうですか。私が間違っていなければ、MVC は Smalltalk に導入され、その後いくつかのパブリッシュ/サブスクライブ パターンが出現しました。
オブザーバー パターン (パブリッシュ/サブスクライブ パターンのサブセット) は、サブジェクトと呼ばれるオブジェクトがオブザーバーと呼ばれるその従属オブジェクトのリストを保持し、状態の変化を自動的に通知するソフトウェア設計パターンです。彼らの方法の。主に、分散イベント処理システムの実装に使用されます。
例 : 保存するデータがある場合にのみ、エディターで [保存] ボタンが有効になります。オブザーバー パターンのもう 1 つの例は、MFC のドキュメント ビュー アーキテクチャで、ドキュメントが変更されるとビューが更新されます。