我看到很多标记为“ Manager”的类。如何使用经理类?
例如,它是否被这样的合成所使用?:
var m: Mananger = new ManagerClass();
m.doSomething();
类似的类用于管理另一个类的一组对象,这些对象通常是资源。
例如,假设您有一个数据库连接池,每个数据库连接都由DBConnection
类的对象表示。
如果您的代码需要通过连接池连接到DB,它将仅向DBConnection_Manager
类请求新的连接。我们为什么需要经理班?
Manager类将查询其DBConnection对象的列表,并确定其中是否有未分配的对象,并返回一个。如果已全部分配,它将创建一个并添加到池中(受允许的最大连接限制)或将请求放入队列中,或者报告失败。
此功能的所有功能都对调用者完全隐藏-管理池的细节是Manager类的工作。
这只是一个特定的示例,但是其思想是资源管理是集中的,并使用Manager类进行封装,而用户代码仅要求“资源”。
尽管我发现至少有一个这样说的网页,但我不确定这种方法是否有真正的“设计模式”:http://www.eventhelix.com/realtimemantra/ManagerDesignPattern.htm
更新:如果使用动作脚本,则可以使用此类来管理声音,事件监听器或GUI小部件(例如上下文菜单)
Manager类是代码在某些地方不适合使用的常见转储场所。它们也往往是god classes。
[Some认为经理是code smell
通常意味着有人正在实现一种设计模式,并且不知道(或不想使用)它的正式名称。您必须阅读代码以得出任何有意义的结论。
我认为,在以下情况下应该使用经理类: