我看到很多標有「經理」的類。經理級別如何使用?經理級的目的是什麼?
例如,它習慣的成分,如:
var m:Mananger = new ManagerClass();
m.doSomething();
我看到很多標有「經理」的類。經理級別如何使用?經理級的目的是什麼?
例如,它習慣的成分,如:
var m:Mananger = new ManagerClass();
m.doSomething();
類似這樣的類用於管理另一個類的對象集合,這些對象通常是資源。
例如,假設您有一個數據庫連接池,每個連接都由一個DBConnection
類的對象表示。
如果您的代碼需要通過連接池連接到數據庫,它只會要求DBConnection_Manager
類進行新的連接。我們爲什麼需要經理級?
Manager類將查詢它的DBConnection對象列表,並確定它們中的任何一個是否未分配,然後返回一個。如果全部分配,它將創建一個並添加到池中(受最大連接許可限制的限制),或者將請求放在隊列中,或報告返回失敗。
所有這些功能對調用者來說都是完全隱藏的 - 管理池的基本細節是Manager類的工作。
這僅僅是一個具體的例子,但其思想是資源管理是集中的,並且使用管理器類進行封裝,用戶代碼只是要求「資源」。
我不知道,如果有一個善意,善意「設計模式」的這種做法,但我發現至少有一個網頁,是這麼說的:http://www.eventhelix.com/realtimemantra/ManagerDesignPattern.htm
更新:在動作的情況下,這樣的類可以用來管理聲音或事件監聽器或GUI小部件(例如上下文菜單)
它通常意味着有人正在實施一個設計模式,完全不認識(或不想要使用),正式名稱爲它。你必須閱讀代碼才能得出任何有意義的結論。
管理器類是代碼的通用傾銷地點,它以某種方式不適合其他地方。他們也傾向於或成爲god classes。
Some認爲管理者是一個code smell
在我看來,經理類應該在這些條件下使用:
max
或min
一個
我相信它管理的東西 – 2011-01-19 16:14:21
@ M28:不是如果代碼被混淆了。 – MusiGenesis 2011-01-19 16:15:48