MVC はデザイン パターンですか、それともアーキテクチャ パターンですか
-
18-09-2019 - |
解決
MVC はアーキテクチャ パターンに近いものですが、完全なアプリケーション向けではありません。MVC は主に、アプリケーションの UI / インタラクション層に関連します。ビジネス ロジック レイヤー、おそらくはサービス レイヤーとデータ アクセス レイヤーが必要になります。つまり、n 層アプローチを使用している場合です。
他のヒント
なぜそのうちの 1 つが真実でなければならないのでしょうか?
視点によっては、どちらも真実である可能性があります。
MVC がアプリケーション アーキテクチャの基礎を形成する場合、MVC はアーキテクチャ パターンになり得ます。
また、単なるデザイン パターン、つまりあらゆるアプリケーションに適用できる抽象的な概念とみなすこともできます。
デザインパターン 効果的にコードを書く方法を言う(考慮して) コードメトリクス).
いくつかの利点:
- メンテナンスが簡単
- 高い再利用性
- 抽象化されているため読みやすい
アーキテクチャパターン 資源を有効に活用する方法を教えてください。
- プログラマーやグラフィック デザイナーなどの並列タスクの実行は、並行して作業できます。
- ソフトウェアを構築するために複数のテクノロジーを利用できます。
MVCでは、 a)。 ビューは JavaScript テンプレートを使用して作成でき、HTML も使用できます。 b)。 コントローラーは .NET Framework で作成でき、 c)。 モデルは Java で記述できます。json データのみを返す Java サービスを使用できます。
デザインパターン中、パターン できない で実装される コードは、JavaのAdminUserクラスなどの複数のテクノロジーで記述できます。 C# の Customer クラス、PHP の Partners クラス、Ruby のファクトリ パターン :);うーん、とても簡単ですか?:)
少し前に答えが出ていることは知っていますが、MVC を有名にした本についてはまだ誰も言及していません。パターン指向ソフトウェア アーキテクチャ (POSA)、Buschmann ら著、1996 年発行。Gamma らによる『Design Patterns』ほど広く読まれているわけではありませんが、POSA はパターン コミュニティで使用される基礎的な本の 1 つです。
ああ、POSA は MVC をアーキテクチャ パターンとして明確に識別します。私の予感では、MS と Sun は単にいい加減で、すべてのパターンを「デザイン パターン」と呼んでいるだけではないかと思います。
どちらも真実だと思います。特定のものを見ている場合 インスタンス化 Ruby on Rails のようなフレームワークにおける MVC の場合、そのインスタンス化はむしろ設計パターンです。MVC を次のように考えると、 一般的な概念, 、それはむしろアーキテクチャパターンです。
MVC は、ソフトウェア アーキテクチャの書籍で常にプレゼンテーション層として言及され、紹介されています。
これらの本を読んでください:
エンタープライズ向けの Microsoft.NET ソリューションの設計 (マイクロソフトプレス)
プロフェッショナルな ASP.NET デザイン パターン (ロックス)
Microsoft.NET を使用したエンタープライズ ソリューション パターン (マイクロソフトプレス)
エンタープライズ アプリケーション アーキテクチャのパターン (アディソン・ウェスリー)
エンタープライズ アーキテクチャの実践ガイド (プレンティスホール)
10 人のソフトウェア アーキテクトを部屋に集めて、Model-View-Controller パターンとは何かについて議論させた場合、最終的には 12 の異なる意見が生まれるでしょう。…世の中の純粋主義者の中には、私が「MVC」と呼んでいるものに違和感を覚える人もいるでしょう。この Web ページの下部にある掲示板に、お気軽に炎上コメントを残してください。MVC が何を意味するかについて、さまざまな視点を喜んで受け入れますが、私は気にしないことに留意してください。
ジョシュ・スミス
モデル/ビュー/コントローラー (MVC) の 3 つのクラス内の設計パターンには以下が含まれますが、これらに限定されるわけではありません。
観察者, 、オブジェクトを分離することで、変更されたオブジェクト (モデル) が他のオブジェクト (ビュー) の詳細を知る必要がなく、1 つ (モデル) への変更が他のオブジェクト (ビュー) に任意の数に影響を与えることができます。
複合, これにより、グループ オブジェクト (複合ビュー) を、その個別のオブジェクト (ビュー コンポーネント) の 1 つを扱うのと同じように扱うことができます。
戦略, ここで、ビューはコントローラー サブクラスのインスタンスを使用して、特定の応答戦略を実装します。別の戦略を実装するには、インスタンスを別の種類のコントローラーに置き換えるだけです。
ファクトリーメソッド, 、ビューのデフォルトのコントローラー クラスを指定します。
デコレーター, 、ビューにスクロールを追加します。
参照
- ページ 4 ~ 6 (セクション 1.2 Smalltalk MVC のデザイン パターン)
- 293~304ページ(オブザーバーデザインパターン)
- 163~174ページ(複合デザインパターン)
- 315~324ページ(戦略設計パターン)
- 107~116ページ(ファクトリーメソッドデザインパターン)
- 175~185ページ(デコレータデザインパターン)
エリック・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシデス。 デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素. 。アディソン・ウェスリー、マサチューセッツ州レディング、1994 年。
Martin Fowler によれば、これらは GUI アーキテクチャです。 Martin Fowler-GUI アーキテクチャ
これはアプリケーションのサイズによって異なります。これは GUI 関連のクラスにのみ影響するため、小規模なもの (主に GUI) ではアーキテクチャ パターンとみなされますが、大規模なものでは GUI に適用する単なる設計パターンになります。コード (アプリ コードの 10% である可能性があります)。
MVCはアーキテクチャパターンです。非常に明確に記載され、示されています http://molecularsciences.org/zend/mvc_model_view_controller