web-dev-qa-db-ja.com

C ++でのMVCアプローチ

私はPHP MVCパターンで、かなりクールです。アプリはほぼ完成しています。良いデザインなしでコードを作成するのがいかに面倒かがわかります。MCVをC++アプリに適用できますか?それが可能な場合、プラグインマネージャー/プラグインはどこに行きますか?モデルまたはコントローラーでは?ありがとう!

編集:

QT/Wxwidgets/GTK +のようなGUIツールキットを備えたC++も意味します。C++での実装方法についても教えてください。私はPHPでそれを行う方法を学びましたが、あなたが知っているように2つの言語はどういうわけか違います!

EDIT2

http://forums.wxwidgets.org/viewtopic.php?f=1&t=3098

18
Stefano Mtangoo

c ++で実際にどのように実装しますか

  • レンダリングを担当するクラスにアプリケーションの詳細について何も知らせないようにします。このことを明確にするために、SomethingViewクラスと呼びます。

  • ドメインオブジェクトが視覚化やユーザー操作について何も知らないようにします。それらをモデルと呼ぶ必要はありませんが、

  • コントローラーの役割の実行を担当する一連のクラスを作成します。依存関係を配線して、可能であれば依存関係の注入を介してクラスを表示およびモデル化します。例: CppInject 。いずれの場合でも、コントローラークラスはモデルクラスとビュークラスの両方を認識できるため、重要な部分は次のとおりです:ビューとモデルオブジェクト間のすべての結合がコントローラーに分離されます

  • また、これは、すべての命令型プログラミングもコントローラークラスに限定する必要があることを意味します。ビューとモデルは宣言型スタイルでなければなりません。つまり、その役割に関連するサービスを提供する必要がありますが、副作用として他のオブジェクトとの直接の相互作用を避けます

  • イベントスタイルのシステムを使用してコントローラーと他のコンポーネント間の通信を実装する必要はありませんが、そのようなシステムは確実に役立ちますが、必須ではありません。

  • 驚き!上記はすべての言語またはフレームワークに適用されますが、もちろん、MVCを最初からスローダウンさせている言語は例外です。Ruby = on Rails

26
lurscher

MVCは言語固有の構造ではなくデザインパターンであるため、C++アプリにも適用できます。

MVCは任意の言語で適用できるため、ユーザーインターフェースがバックエンドと疎結合されているため、相互に影響を最小限に抑えて変更できます。

MVCパターンは、オブジェクトを次のように明確に分離します。

  • モデルデータの保守用、
  • Viewsデータのすべてまたは一部を表示します。
  • Controllersモデルまたはビューに影響を与えるイベントを処理します。
9
Alok Save

はい、MVCはC++で適用できます。たとえば、MFCフレームワークは、本質的にMVCであるドキュメント/ビューアーキテクチャを使用します。

デザインパターンは、ライブラリやクラスではありません。それはパターンです。したがって、C++用の汎用MVCライブラリはありません。

4
Armen Tsirunyan

Tree frogs Framework を使用します。 TreeFrogフレームワークは、Webアプリケーションを開発するための高速かつフルスタックのC++フレームワークです。

3
MaK

[〜#〜] mvc [〜#〜] は、一般に建築設計パターン(つまり、wayの構築ソフトウェア)ですWebアプリケーションに関連付けられていますが、一般的に、あらゆる言語のあらゆるソフトウェアプロジェクトに適用できます。プロジェクトを少し抽象化し、各ソフトウェアがどの部分に属しているかを特定する必要があります(つまり、GUIはおそらくビューの一部です)。

このタイプのパターンは主に個別の開発を目的としているため、他のプロジェクトに関係なくプロジェクトの任意の部分を開発できることに注意してください。これは小さなスタンドアロンアプリケーションにとっては煩わしいものですが、より大きなプロジェクトでは有用であり、やりがいがあります。

2
ascanio