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