2012-02-23 10 views
4

私は過去数ヶ月の間にAndroidで開発してきましたが、いくつか学んだことがありますが、すぐにそれをやることが始まると思います。 MVP/MVCパターンです。この場合、UIを処理するのに最適なパターンです。AndroidアプリのMVPパターンを定義する際の問題

私は多くのスレッドと例を読んだことがありますが、私はまだ多少の疑問を抱いています。

アクティビティをプレゼンター/コントローラとして定義し、他のものをビューとして定義します。アクティビティは、ビューの代わりにプレゼンターとして機能し、状態を保持し、レイアウトをユーザーに提示するための自然な機能です私は間違っていると誰かがこれを明確にすることを願っています。私が正しいだ場合

、そしてビューは、私が見つけることができませんでした

...レイアウトを使用して異なるクラスになると私は迷子にプレゼンター(活動)、これがあると通信するためのイベントをバインドする必要がありますビューから拡張されたクラスを適切に作成し、レイアウトを使用してイベントをバインドし、発表者と通信できるようにします。私がこれを行った唯一の方法は、Builderオブジェクトを使用することでした。ビルダーはインフレータからビューを作成し、イベントをバインドします。これは動作しますが、MVPパターンを破壊するInterfaceはビューに実装されません。

場合、私は本当に感謝私は考える他の方法は、Androidのビューオブジェクトへのプロキシとしてビューを使用することですが、私は、これはそれを処理するための最良の方法であるかどうかわからないんだけど...

誰かが私を正しい方向に向けることができます。

ありがとうございました。

+0

これまでに読んだMVC/MVPパターンのチュートリアルへのリンクはありますか? – Jimmy

+0

James、そのうちのいくつかはhttp://chicagoandroid.com/forum/topics/mvp-android-perspectiveとhttp://www.jamespeckham.com/blog/10-11-21/MVP_on_Android.aspxですウェブ上で検索中にgithubからのいくつかのプロジェクト – varholl

答えて

3

私は他のコンテキストでMVCに関するいくつかの経験があり、Androidで非常に多くを開発した後は、まったく簡単ではないと思います。

あなたは、アクティビティでControllerとViewコードをミキシングする可能性があります。それはコントローラーであるはずですが、メニュー、ダイアログなどのユーザーのやりとりを多面的に処理します。そして、それを脱出するのは簡単ではありません。

Androidの開発は、私にDjangoとMVT、Model-View-Templateと呼ばれるものを思い起こさせる別のパラダイムに従っていると思います。

私はAndroidでMVCを厳密に遵守しようとしないことをお勧めします。ビューとコントローラのコードは混在することがありますが、コードはモジュール化された方法で維持可能なままです。カスタムビューや他の専用クラスは、この点で多くの助けになります。

あなたは、私の意見では、学術的なMVCを探すのではなく、フレームワークの自然なロジックに従うことで、多くの時間を節約できます。

+1

+1最後の文。 – CommonsWare

+0

MVPを使用した実際の実例(私のプロジェクトの1つ)で概念の証明を行いました。本当にうまく見えて、うまく動作し、コードがきれいに保たれています。なぜそれが簡単ではないのか分かりません。 – varholl

+0

@それは本当にまっすぐではありません、それは今私を混乱させています –

1

スパゲッティコードとおそらく潜在的なメモリリークが気にならない場合。 1つの基本レイアウト/ビューをアクティビティに結びつけるようなことができます。次に、好みのビューをレイアウトにロードします。このビューのカスタムクラスは、Activityを呼び出して、それを呼び出すアクティビティを参照して通信することができます。ビューを切り替える場合は、現在のビューを別のビューに置き換えます。

原則はフラグメントと同じですが、私のやり方は単なるヒープです。

そのあと、私はAPI &フラグメントに固執します。物事をきちんと保ちながら、MVCのような構造には十分に近いです。

あなたは私のやり方を試すことができます。それはあなたに何もしないことをたくさん教えるかもしれません。あなたがまだ分かっていない場合に備えて、Mapのようなものもビュー上では機能しません:)

関連する問題