2011-01-19 84 views
1

我看到很多標有「經理」的類。經理級別如何使用?經理級的目的是什麼?

例如,它習慣的成分,如:

var m:Mananger = new ManagerClass(); 

m.doSomething(); 
+3

我相信它管理的東西 – 2011-01-19 16:14:21

+1

@ M28:不是如果代碼被混淆了。 – MusiGenesis 2011-01-19 16:15:48

回答

5

類似這樣的類用於管理另一個類的對象集合,這些對象通常是資源。

例如,假設您有一個數據庫連接池,每個連接都由一個DBConnection類的對象表示。

如果您的代碼需要通過連接池連接到數據庫,它只會要求DBConnection_Manager類進行新的連接。我們爲什麼需要經理級?

Manager類將查詢它的DBConnection對象列表,並確定它們中的任何一個是否未分配,然後返回一個。如果全部分配,它將創建一個並添加到池中(受最大連接許可限制的限制),或者將請求放在隊列中,或報告返回失敗。

所有這些功能對調用者來說都是完全隱藏的 - 管理池的基本細節是Manager類的工作。

這僅僅是一個具體的例子,但其思想是資源管理是集中的,並且使用管理器類進行封裝,用戶代碼只是要求「資源」。

我不知道,如果有一個善意,善意「設計模式」的這種做法,但我發現至少有一個網頁,是這麼說的:http://www.eventhelix.com/realtimemantra/ManagerDesignPattern.htm


更新:在動作的情況下,這樣的類可以用來管理聲音或事件監聽器或GUI小部件(例如上下文菜單)

3

它通常意味着有人正在實施一個設計模式,完全不認識(或不想要使用),正式名稱爲它。你必須閱讀代碼才能得出任何有意義的結論。

7

管理器類是代碼的通用傾銷地點,它以某種方式不適合其他地方。他們也傾向於或成爲god classes

0

在我看來,經理類應該在這些條件下使用:

  1. 多個對象必須是過程
  2. 通行證對象列表,調用者不是您應該提供一些高級功能,例如選擇maxmin一個
  3. 要管理的對象應該屬於一個類(m anage很容易)