2011-01-19 6 views
1

"Manager"というラベルのクラスがたくさんあります。マネージャークラスはどのように使用されますか?例えばマネージャクラスの目的は何ですか?

のように、それは、組成によって慣れるん:それは通常、誰かがデザインパターンとdoesntのノウハウを実施している(またはdoesntのは、使用したい)それのための正式名称を意味

var m:Mananger = new ManagerClass(); 

m.doSomething(); 
+3

私はそれが –

+1

@ M28のものを管理していると信じています。コードが難読化されていない場合はありません。 – MusiGenesis

+0

私は推測することはできません...しかし、私は "マネージャ" - サフィックスは、 "OrderManager"、 "CustomerManager"などのビジネス層のクラスに使用されるいくつかのプロジェクトを見てきました – Ozzy

答えて

5

このようなクラスは、しばしばリソースである別のクラスのオブジェクトのセットを管理するために使用されます。

たとえば、データベース接続のプールがあり、それぞれがDBConnectionクラスのオブジェクトで表されているとします。

コードを接続プール経由でDBに接続する必要がある場合は、単に新しい接続をDBConnection_Managerクラスに問い合わせます。なぜマネージャークラスが必要なのですか?

Managerクラスは、そのDBConnectionオブジェクトのリストを調べて、割り当てられていないものがあるかどうかを判断して戻り値を返します。すべてが割り当てられている場合は、プールを作成してプールに追加するか(最大接続許容限度に従う)、キューに要求を配置するか、失敗を報告します。

この機能はすべて、発信者から隠されています。プールを管理するためのきめ細かな詳細は、Managerクラスの仕事です。

これは具体的な例ですが、リソース管理は集中管理され、Managerクラスでカプセル化され、ユーザーコードは単に「リソース」を要求するという考えがあります。私はそう言って、少なくとも一つのウェブページを見つけたものの

は、私は、このアプローチのための正真正銘の「デザインパターン」があるかどうかわからない:http://www.eventhelix.com/realtimemantra/ManagerDesignPattern.htm


更新:アクションスクリプトの場合は、そのようなクラスは、サウンドやイベントリスナ、GUIウィジェット(コンテキストメニューなど)の管理に使用できます。

3

。意味のある結論を導くためにコードを読む必要があります。

7

マネージャクラスは、何とか他の場所には適合しなかったコードの一般的な場所です。彼らはまた、god classesになる傾向があります。

4

Someは、管理者が私の意見ではcode smell

+0

私はちょうどそのような質問をするつもりでした、そして、この答えは私の期待を上回りました。ところで、 'some'は本当にクールな男です。 – alehro

+2

ボブおじさんもやっています。 http://programmers.stackexchange.com/questions/17100/clarify-the-single-responsibility-principle – weltraumpirat

0

であると考えて、マネージャクラスは、これらの条件で使用する必要があります。

  1. 複数のオブジェクトは、呼び出し元に、プロセス
  2. パスオブジェクトリストである必要はありません十分な場合は、maxまたはminを選択するなどのいくつかの先進機能を提供する必要があります
  3. 管理するオブジェクトは1つのクラスに属している必要があります簡単にanage)
関連する問題