1. ホーム
  2. アンドロイド

[解決済み】Androidではどのようなアーキテクチャパターンが使われていますか?[クローズド]

2022-04-17 04:30:32

質問

モバイルプラットフォームについて少し調べているのですが、Androidではどのようなデザインパターンが使われているのか知りたいのですが。

例:iOSではModel-view-controllerがdelegationや他のパターンとともに非常に広く使用されています。

Androidでは、特にどのようなパターンを、どこで使っているのでしょうか?

EDIT

カーネルやDALVIKなどの奥深いところで使われているデザインパターンではなく、アプリケーション開発者がアプリケーションを開発する際に出会うであろうパターンについてお聞きしたいのです。

どのように解決するのですか?

の両方を使ってみました。 モデルビューコントローラー (MVC)と モデルビュープレゼンター アンドロイド開発のためのアーキテクチャパターン。私の発見は、モデル-ビュー-コントローラはうまく機能しますが、いくつかの問題"quot;があることです。それは、あなたがAndroidをどのように認識しているかによります。 Activity クラスがあります。それはコントローラなのか、それともビューなのか?

実際の Activity クラスは、Android の View クラスは、ユーザーへのウィンドウの表示と、ウィンドウのイベント(onCreate、onPauseなど)を処理します。

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

MVCでは、コントローラがメインのエントリーポイントになるとされています。Androidの開発に適用する場合、アクティビティがほとんどのアプリケーションの自然なエントリポイントであるため、これが事実であるかどうかは少し疑問があります。

このため、個人的には モデルビュープレゼンター パターンは、Androidの開発に最適なパターンです。このパターンにおけるビューの役割は、なので。

  • エントリーポイントとして機能する
  • レンダリングコンポーネント
  • ユーザーイベントのプレゼンターへのルーティング

これにより、このようにモデルを実装することができます。

表示 - は、UIコンポーネントを含み、それらのイベントを処理します。

プレゼンター - これはモデルとビューの間の通信を処理します。モデルへのゲートウェイと見なしてください。つまり、もしあなたが複雑なドメインモデルを持っていて、ビューがそのモデルの非常に小さなサブセットを必要としている場合、プレゼンターの仕事はモデルへの問い合わせと、ビューの更新になります。例えば、テキストの段落、見出し、単語数を含むモデルを持っているとします。しかし、あるビューでは、ヘッドラインだけを表示すればよいのです。すると、プレゼンターはモデルから必要なデータを読み出し、それに応じてビューを更新します。

モデル - これは基本的にあなたの完全なドメインモデルであるべきです。うまくいけば、上記のようなケースに対処するための特別なメソッドを必要としないので、あなたのドメインモデルをよりquot;tight"にするのに役立ちます。

モデルをビューから完全に切り離すことで、(プレゼンターを使用することで)モデルのテストもより直感的に行えるようになります。ドメインモデル用のユニットテストと、プレゼンター用のユニットテストを持つことができます。

試してみてください。個人的にはAndroidの開発にはとても合っていると思います。