web-dev-qa-db-ja.com

MVCはデザインパターンまたは建築パターンですか

Sun および Msdn によると、これは設計パターンです。

Wikipedia によると、これはアーキテクチャパターンです

設計パターンと比較して、アーキテクチャパターンは規模が大きくなります。 (Wikipedia- 建築パターン

または設計パターンもある建築パターンですか?

どちらが本当ですか?

101
JCasso

MVCはアーキテクチャパターンに近いものですが、完全なアプリケーション用ではありません。 MVCは、主にアプリケーションのUI /対話層に関連しています。ビジネスロジック層、おそらくはサービス層とデータアクセス層が必要になります。つまり、n層アプローチを使用している場合です。

51
user151323

なぜそれらの1つが真実でなければならないのですか?

視点に応じて、両方が当てはまる場合があります。

MVCは、アプリケーションアーキテクチャの基盤を形成する場合、アーキテクチャパターンになります。

また、単に設計パターン、あらゆるアプリケーションに適用できる抽象的な概念として見ることもできます。

38
Oded

デザインパターンは、コードを効果的に書く方法を言います( コードメトリクス を考慮して)。

いくつかの利点:

  1. メンテナンスが簡単
  2. 高い再利用性
  3. 抽象化のため読みやすい

建築パターンは、リソースを効果的に利用する方法を示しています。

  1. プログラマーやグラフィックデザイナーのような並列タスクの実行は、並列で実行できます。
  2. 複数のテクノロジーを利用してソフトウェアを構築できます。

MVCでは、a)。ビューはJavaScriptテンプレートを使用して作成でき、htmlも使用できますb)。コントローラーは.NET frameworkで記述でき、c)。モデルはJavaで記述できます- JSONデータのみを返すJavaサービスを使用できます。

設計パターンでは、パターンを実装できません。JavaのAdminUserクラス、C#のCustomerクラス、 PhpのパートナークラスとRubyのファクトリーパターン:);うーん、とても簡単?:)

26
vrluckyin

しばらく前に回答があったことは知っていますが、1996年に出版されたBuschmannなどによるMVCを有名にした本:Pattern-Oriented Software Architecture(POSA)についてはまだ誰も言及していません。 、GammaなどによるPOSAは、パターンコミュニティで使用される基本的な書籍の1つです。

ああ、POSAはMVCをアーキテクチャパターンとして非常に明確に識別しています。私の考えでは、MSとSunは単にずさんで、すべてのパターンを「デザインパターン」と呼んでいます。

6
John

両方とも真実だと思います。 Ruby on RailsのようなフレームワークでMVCの特定のインスタンス化を見ている場合、そのインスタンス化はより設計パターンです。MVCを一般的な概念、それはよりアーキテクチャ上のパターンです。

3
Jim Ferrans

10人のソフトウェアアーキテクトを1つの部屋に入れて、Model-View-Controllerパターンが何であるかを議論させると、12の異なる意見になります。 …そこにいる純粋主義者の中には、私が「MVC」と呼ぶものに必然的に不安を感じる人もいます。このWebページの下部にある掲示板に炎のようなコメントを残してください。 MVCが何を意味するかについて、さまざまな視点を喜んでおもてなししますが、気にしないことに留意してください。

ジョシュ・スミス

2

クラスのModel/View/Controller(MVC)トライアド内のデザインパターンには、次のものが含まれますが、これらに限定されない場合があります。

  • オブザーバー、オブジェクト(モデル)を変更すると、他のオブジェクト(モデル)が他のオブジェクト(ビュー)の詳細を知る必要なく、任意の数の他のオブジェクト(ビュー)に影響を与えることができます。

  • Composite。グループオブジェクト(複合ビュー)を、その個々のオブジェクト(ビューコンポーネント)の1つと同様に扱うことができます。

  • Strategy、ここでビューは特定の応答戦略を実装するためにControllerサブクラスのインスタンスを使用します。別の戦略を実装するには、インスタンスを別の種類のコントローラーに置き換えるだけです。

  • Factory Method、ビューのデフォルトのコントローラークラスを指定します。

  • デコレーター、ビューにスクロールを追加します。


参照

  • 4〜6ページ(セクション1.2 Smalltalk MVCの設計パターン)
  • 293〜304ページ(オブザーバーデザインパターン)
  • 163〜174ページ(複合デザインパターン)
  • 315〜324ページ(戦略設計パターン)
  • 107〜116ページ(工場メソッドのデザインパターン)
  • 175〜185ページ(デコレーターのデザインパターン)

エリックガンマ、リチャードヘルム、ラルフジョンソン、ジョンヴリスサイド。 設計パターン:再利用可能なオブジェクト指向ソフトウェアの要素。 1994年マサチューセッツ州レディングのAddison-Wesley.

2
George

MVCは、ソフトウェアアーキテクチャの本のプレゼンテーション層として常に言及および導入されています。

これらの本を読んでください:

  1. エンタープライズ向けMicrosoft.NETソリューションの設計 (Microsoft press)

  2. プロフェッショナルASP.NETデザインパターン (Wrox)

  3. Microsoft.NETを使用したエンタープライズソリューションパターン (Microsoft Press)

  4. エンタープライズアプリケーションアーキテクチャのパターン (Addison Wesley)

  5. エンタープライズアーキテクチャの実践ガイド (Prentice Hall)

2

そして、Martin Fowlerによると、それらはGUIアーキテクチャです。 Martin Fowler-GUIアーキテクチャ

GUIに関連するクラスにのみ影響するため、アプリケーションのサイズに依存します。小さなクラス(主にGUI)ではアーキテクチャパターンと見なすことができますが、巨大なクラスではGUIに適用するデザインパターンにすぎませんコード(アプリのコードの10%になる可能性があります)。

1
Iker Jimenez

MVCはアーキテクチャパターンです。 http://molecularsciences.org/zend/mvc_model_view_controller で非常に明確に述べられ、示されています

0
Nazim