2012-02-21 14 views
3

http://developer.android.com/guide/basics/what-is-android.html Androidアーキテクチャを参照してください。ファサードパターンとマネージャクラス

異なるサブシステムのファサードオブジェクトのような異なるマネージャーを考えることができます。 たとえば、すべてのリソースサブシステムに対するファサードオブジェクトのようなリソースマネージャを考えることができますか?

多分、クラスの管理者名は異なる目的を持っていますか?

答えて

4

これは、ケースバイケースで区別する必要がありますが、回答はしばしば「いいえ」と言います。理由を説明しましょう。

独自の機能を持たないが、サブシステムへのアクセスを削除せずに、サブシステムへのシンプルなインターフェイスを提供するシステムへの特定のエントリポイントとして定義された4つのファサードのギャング。

ここでは、たとえばandroid.content.res.Resourcesを見てみましょう。それは本当に統合されたインターフェイスですが、リソースを使用せずにリソースを取得できますか?いいえ、不可能です:プログラマが利用できないメソッドandroid.content.res.AssetManagerを使用します。したがって、Resourcesは本当に他のものへのアクセスを単純化しません。このクラスは、リソースシステムの不可分な部分です。つまり、このクラスはファサード とはみなされません。

逆に、android.view.animation.AnimationUtilsのようなクラスはファサードです。開発者が自分でできなかったことは何もしません。ただし、XMLファイルを解析してアニメーションクラスを手動で作成する代わりに、開発者がこのクラスのメソッドの1つを呼び出す方が簡単です。これは、システム自体へのアクセスを削除することなく、アニメーションサブシステムのいくつかのデフォルト使用を表します。したがって、それはファサードと呼ばれる完全な権利を持っています。

+0

管理者クラスは、一部のサブシステムへの単一アクセスポイントを導入する目的を持っていますか? – user1074896

+0

@ user1074896私たちがマネージャーと考えるものによって異なります。クラスの中には、 'AlarmManager'のような単一のエントリーポイントを提供するものがありますが、' PreferenceManager'はそうではありません。 – Malcolm

+0

大丈夫、ありがとう – user1074896

2

あなたは正しい方向に向かっていると思います。例えば、XXXManagerのクラスがあり、指定されたシステム(環境設定システム、検索システム、アプリケーションパッケージシステムなど)で作業することができます。

そして、このクラスのすべてをFacadesのように認識しているかもしれません。もう一つの手は、システムの変更に使うべきより具体的なオブジェクトを提供するものです。

関連する問題