簡體   English   中英

經理類的目的是什么?

[英]What is the purpose of a Manager Class?

我看到很多類標記為“經理”。 如何使用管理器類?

例如,它是否被這樣的組合使用?:

var m: Mananger = new ManagerClass();
m.doSomething();

管理器類是不適合其他地方的代碼的常見垃圾場。 他們也傾向於成為或成為神類

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

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

如果您的代碼需要通過連接池連接到 DB,它只會向DBConnection_Manager類請求新連接。 為什么我們需要經理類?

Manager 類將查詢它的 DBConnection 對象列表,並確定它們中是否有任何一個未被分配,並返回一個。 如果所有都分配了,它將創建一個並添加到池中(受最大連接數限制)或將請求放入隊列,或報告失敗。

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

這只是一個具體的例子,但其思想是將資源管理集中並封裝在一個 Manager 類中,用戶代碼僅要求“一個資源”。

我不確定這種方法是否有真正的“設計模式”,但我發現至少有一個網頁這樣說: http : //www.eventhelix.com/realtimemantra/ManagerDesignPattern.htm


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

有些人認為經理是一種代碼味道

這通常意味着有人正在實現一種設計模式並且不知道(或不想使用)它的正式名稱。 您必須閱讀代碼才能得出任何有意義的結論。

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

  1. 需要處理多個對象
  2. 將對象列表傳遞給調用者是不夠的,您應該提供一些高級功能,例如選擇maxmin
  3. 要管理的對象應該屬於一個類(易於管理)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM