8

知りたいのですが、Android が MVC (Model View Controller) 構造をサポートしているかどうか。サポートする場合 1. Controller とは?2.モデルとは?と 3. ビューとは何ですか?

私をクリアしてください。私はこれについていくつかの混乱を持っています。

4

5 に答える 5

24

Android ではどのデザイン パターンが使用されていますか?

Model-View-Control は正常に動作します

実際のActivityクラスは android のクラスを拡張しませんが、ユーザーへのウィンドウの表示を処理し、Viewそのウィンドウのイベント (など) も処理します。onCreateonPause

つまり、MVC パターンを使用している場合、コントローラーは実際には疑似 View-Controllerになります。ユーザーへのウィンドウの表示を処理しているため、 で追加した追加のビュー コンポーネントを使用しsetContentView、少なくともさまざまなアクティビティ ライフ サイクル イベントのイベントを処理します。

MVC では、コントローラがメイン エントリ ポイントになるはずです。activityほとんどのアプリケーションの自然なエントリ ポイントであるため、android 開発に適用する場合にこれが当てはまる場合、これは少し議論の余地があります。

だから、アンドロイドの疑似MVC:

モデル= 主なビジネス ロジックを持つエンティティまたはクラス

View = レイアウト、リソース、ウィジェットなどEditText

コントローラ= ActivityAdaptor

ここに画像の説明を入力

于 2012-08-27T09:56:04.867 に答える
5

モデル= コンテンツ プロバイダー。

コントローラー= アクティビティ、フラグメント、またはサービス。

ビュー= XML レイアウト。

于 2012-08-27T09:37:54.267 に答える
3

MVC はすでに Android に実装されています

View = レイアウト、リソース、および android.view.View から派生した Button などの組み込みクラス。

コントローラ = アクティビティとフラグメント

モデル = アプリケーション ロジックを実装するクラス

于 2012-08-27T09:43:00.863 に答える
1

実際には MVC ではありませんが、Room と LiveData を使用してより MVC になりつつあります

従来の MVC では、コントローラーは意思決定、つまり次に実行するアクションに関するものです。ビューはモデルからデータを読み取り、独自のフィールドを更新します。

Android アクティビティでは、イベントに応じて実行するアクションを決定し、レイアウトのフィールドを設定します。また、モデルからデータを読み取り、ウィジェットを接続します。アクティビティは、従来のコントローラーと従来のビューの両方の論理タスクを結合します。

これが、ほとんどの場合、MVC について話さない理由です。コントローラーとビューの間に明確な分離はありません。Java コードと XML リソースは明確に分離されています。これは理にかなっています。大規模なチームでは、ビジュアル レイアウトとプログラミングを担当する担当者が異なるためです。

独自のビュー コンポーネントをコーディングして、コードのこの部分をビューとして扱うこともできます。これは従来のビューの受動的な部分に過ぎず、ロジックはアクティビティとフラグメント内のコントローラーに結合されています。ビューについてではなく、コンポーネントまたはウィジェットについて話します。ウィジェットがよりインテリジェントになればなるほど、それらが再び取り上げる従来のビューのロジックが増えます。

一方、Room Android などのライブラリを適用すると、再び MVC が大幅に増加します。Room と LiveData を使用すると、ビューでモデルの変更をデータベースの変更に至るまで観察できます。ビューのものをきれいに分離し、コントローラーを意思決定に減らすと、MVC という名前に本当にふさわしい方法でアーキテクチャを構築できます。

結論

それは開発者次第です。実際の MVC を Android に適用することは可能ですが、デフォルトのケースではありません。

于 2018-02-08T13:38:29.707 に答える