Model View Controllerの概念は、アプリケーションを開発する際に留意すべき重要な点として全面的に表現されています。しかし、アプリケーションを開発するとき、私はMVCモデルを使用しているかどうか、それがアプリケーションを傷つけているかどうかを区別するのに苦労します。アプリケーション開発でMVCの概念が重要な理由と、それが開発者のより良いプログラムの作成にどのように役立つのでしょうか?MVCの概念が重要なのはなぜですか?
答えて
まあ、生活の中で多くのことをやって同じように、それは常に便利よく組織されます。モデル、ビュー、およびコントローラは、プロジェクト全体に異なる機能を提供するのに役立つ明確に異なるコードです。そのため、彼らは別々の組織になっています。
プログラムを設計しているとします。すべてのコードを1つの関数に入れるわけではありませんか?いいえ、あなたはそれらを非常に特定のタスクを解決する別々の小さな関数に分割します。同様に、プログラマとして、私たちは、大規模なアプリケーションをより細かい部分に分けて分割する方法を絶えず探しています。これらの組織設計パターンの1つは、モデル(データ)が1つのセクションに存在し、ビュー(UI)が1つのセクションに存在し、コントローラー(ロジック)が別のセクションに存在するMVCです。
これはどのような問題を解決しますか?まあ、機能を分離することで可読性、モジュール性、結合性の問題を解決する方法と同様に、MVCもそうです。コードを変更したい場合は、コードの大きな部分から多かれ少なかれ分離された小さなサブセットに取り組むことができます。これにより、コードをより効果的かつ論理的に追加、変更、削除することができます。同様のコードはグループ化されているため、テストにも役立ちます。テストケースをよりよくカバーすることができます。また、非常に重要なことは、コードを書く回数が少なくなることです。
これが役に立ちます。あなたは、いくつかのソフトウェア開発プロジェクトを経験した後、あなたは理解してます質問です
あなたは「懸念の分離」について聞いたことがありますか? MVCは、単純な言い方をすれば、システムのさまざまな部分を疎結合(または分離)できるアーキテクチャです。ビューは通常ダムであり、データを表示し、ユーザーの操作を行います。モデルは、システムのデータとドメインロジックを表します。コントローラはViewとModelの間を行き来し、しばしばフローを制御します。元のSmalltalk MVCパターンにはさまざまなバリエーションがあり、現在ではすべてのフレームワークがMVCであるようです。
利点は、コードを壊れにくく、理解しやすく変更しやすくし、ユニットテストを容易にすることです。それは異なる部分に分かれているからです。
私は最近、仕事を変えて、PHPで新しいプロジェクトに取り掛かりました(私は.NETの背景から来ています)。学習曲線は、MVCフレームワークを使用しているため、ずっと簡単でした。私はすでにそのパターンを知っていたので、私はすべてが "あった"ところがどこにあるのか、システムがどのように組み合わされたのかを知っていました。
http://en.wikipedia.org/wiki/Model–view–controller https://gamedev.stackexchange.com/questions/5372/mvc-like-compartmentalization-in-games
...
が最も顕著に、それが論理領域にコードを分離します。 UIコードはUI(ビュー)に保持され、ビジネスロジックはコントローラ内に保持され、オブジェクトはモデル内に保持されます。 UIを更新したり、別のUI(Webインターフェイスなど)を作成したり、Webサービスを作成したり、作成したりする必要がない場合、不可解なコードの混乱を解き放つために永久に一日を費やす必要はありません。また、UIやモデルなどの特定の分野に特化するチームの別のメンバーを取得することもできます。これにより、より堅牢なコードが作成されたり、ジュニア開発者が画像全体よりも複雑ではない作業をすることができます。私は、マイクロソフトのWebクライアントソフトウェア(MVCに基づいて...またはMVPC ...または何でも)工場で働いていたとき
はここで事前にMVCフレームワーク時代からの古い記事です:
ますソフトウェアコンポーネントを分離し、疎結合されたデザインを作成しています。これにより、保守が容易になり、読みやすくなり、コード、柔軟性、拡張性が向上します。多くのものが、私はそれはあなたの時間の価値がある学習あなたを約束することができ、この設計パタパタ(ウェブサイト、モバイルアプリ、電気ショック療法。)
に従ってください。私は、あなたの足を濡らしてMVCの仕事を見るために、(CodeIgniter、PHPBlueprint)のような単純なものから飛び込んで始めることを提案します。
チェックアウトするには良い本はHead First Design Patternsです。
- 1. プログラマーが学び、使用すべき重要な概念は何ですか?
- 2. なぜStruts2のActionクラスにシングルトンの概念がないのですか?
- 3. 高度なoopの概念
- 4. 重要なことを学ぶときに "徹底的に"スラングの概念
- 5. なぜオートワイヤリングが必要ですか?誰でも私にオートワイヤリングの概念を説明できますか?
- 6. sqlite概念からcoredata概念へ?
- 7. DTOとDAOの概念とMVC
- 8. Google Bigtableはマルチテナントデータベースの概念ですか?
- 9. オブジェクトパーシスタンスの概念は何ですか?
- 10. OpenCLサブバッファは、なぜ重要ですか?
- 11. シャーディングとは何ですか、なぜ重要なのですか?
- 12. クラスの概念
- 13. インデックスアクセスの概念
- 14. メークファイルの概念
- 15. NHibernateの概念集約的なルート
- 16. 基本的なANTLRの概念
- 17. 概念
- 18. MVCで従来の「ページ」概念を定義するものは何ですか?
- 19. CFSでのvruntimeの概念
- 20. 概念とは何ですか?
- 21. java threadsの概念
- 22. Windowsワークフローランタイムの概念
- 23. UNIXブロックバッファキャッシュの概念
- 24. HTMLセキュリティの概念
- 25. C++スレッドの概念
- 26. Infinityループスライダの概念
- 27. JPAリレーションシップマッピングの概念
- 28. Javaインターフェイスの概念
- 29. 保留中のインテントの概念は何ですか?なぜ、私たちはPending Intentを使用しますか?
- 30. なぜカーネルのロードアドレスは、ブートに重要なramdiskですか?