3

モデルが可能な限りクロスプラットフォームになるように、複雑で UI を多用するアプリを書き直すことを計画しています。私が行った研究/読書は概念的には理にかなっていますが、ある種のクロスプラットフォームアプローチでコントローラーにメッセージを送信するモデルに関しては、ベストプラクティスアプローチが何を伴うかわかりません.

たとえば、モデルは、モデルの API を呼び出すコントローラーを介して変更されます。ただし、モデルは、変更が発生したことをクライアントに通知する責任があるため、それをコントローラーにブロードキャストする必要があります。コントローラーはビューに通知する必要があります。

しかし、C# や Objective-C++ で記述されたコントローラーでは、メッセージングのアプローチが異なりますよね? ビューとのプラットフォーム固有のメッセージ通信を使用するコントローラーに接続するためにシグナルを使用しますか?

プラットフォームに依存しないモデル操作のベスト プラクティスを設定する標準の軽量テンプレートはありますか?

4

2 に答える 2

1

私はほとんど同じことをするプロジェクトを始めようとしています。コールバックメカニズムとしてboost::signals2を使用することを計画していました。コールバックに標準のC関数を使用するため、ほぼすべての言語で機能するはずです。すべてのモデルをC++で記述し、signals2コールバックを介してコントローラーに変更を通知できます。

もちろん、これはモデルとの間のCスタイルのインターフェースに制限されますが、私が知る限り、プラットフォーム間で機能させたい場合は、それが唯一の方法です。

幸運を!

于 2012-08-15T03:41:34.787 に答える
1

統合されたコントローラーをネイティブ (iOS、MFC、HTML など) ビューと一緒に使用するのはかなり困難です。

私は個人的に、完全なヘッドレス API をアプリケーションに作成しています。モデル (内部) とビュー (外部) を操作するために公開するのは、この API です。

このアプローチでは、集中化および統合された「マスター」コントローラー (my API) を利用します。このコンポーネントは厳密に MVC である必要はありません。各プラットフォームには、内部 API とプラットフォーム ネイティブ ビューを橋渡しする個別の (サブ) コントローラーがあります。

レイヤードアプローチです。メッセージング メカニズムに関しては、C++ コールバック (Boost Function & Bind) は単純なタスクには十分に機能します。@Rotsiser_Mho が推奨する Boost Signals は、より堅牢です。

C++ は、ほぼすべてのプラットフォームと混在できるため、コアに適したオプションです。Android でも、ネイティブ コードで NDK にリンクできます。

ビューが複雑すぎる場合 (多数のカスタム ビジュアライゼーションなど)、WX、QT、GTK、Cairo、OpenGL、Swing などのクロス プラットフォーム UI ツールキットを使用することをお勧めします。組み込みのネイティブ信号システムとコントローラー設計を使用します。

于 2012-08-15T07:11:40.053 に答える