“经理”Java的替代品[关闭]

Posted

技术标签:

【中文标题】“经理”Java的替代品[关闭]【英文标题】:Alternatives to "Manager" Java [closed] 【发布时间】:2014-08-26 06:09:18 【问题描述】:

我目前在我正在处理的项目中有几个“经理”类,但我看到很多建议您不要使用经理类,但在我的情况下似乎没有提供任何替代方案。我有一个 ClickManager,其中包含一个“可点击”对象的映射和一个 ConfigManager,它负责加载和保存配置文件,因为配置类来自我正在使用的 API,并且太愚蠢而无法自行加载。

在这些情况下使用“经理”有哪些替代方法?

【问题讨论】:

如果“经理”是指一个单例对象 - 这样做没有错。 如果您的点击管理器的唯一功能是包含对象,更好的名称是“ClickableContainer”,因为它更好地描述了它的功能。如果它与它们一起执行功能,请将其放在类名中。对于您的配置管理器,也许查看 Spring 或其他 IoC 框架来配置您的对象会提供更好的解决方案。否则,像“ConfigurationPersister”这样的东西可能会更好地描述它的功能。 相关:How to avoid calling everything a “<WhatEver>Manager”? 【参考方案1】:

Ward Cunningham 曾经说过 (1) 每个程序员的办公桌上都应该有一本字典和同义词库。还有一种说法是,计算机科学中只有两个难题:缓存失效和命名事物。 (2)

关键是命名事物很重要,而且很难,而且经常被忽视。这就是为什么在许多代码库中散布着名为 DataManager 的类。

这里至少有两件可能发生的事情。一个是该类正在做一些合理的事情,它只需要一个好的、简洁的、描述性的名称应用于它。例如,使用ClickManager,它会向可点击对象分派事件吗?如果是这样,也许是Dispatcher。它是否布置了可点击的对象?也许是Positioner。它是否包含可点击的对象(正如 Erwin Bolwidt 建议的那样)?也许是Container。它是否响应点击执行某些操作?也许是InteractiveCommand。有时,更具体地考虑一个类在做什么以便想出一个好名字会很有帮助。

还有一种可能是类职责太多,也就是违反了Single Responsibility Principle。这通常是某些东西难以命名的原因,因为它做了很多不同的事情。假设该类同时包含可点击对象,向它们分派事件,定位它们,执行命令。难怪除了Manager 之外很难想出一个名字,因为它正在做所有这些相关但独立的功能。 (请注意,在许多 UI 工具包中,这些职责已被分成不同的类。)

如果是这种情况,建议将一个大的Manager 类重构为更小的类,每个类都有更少(或一个)职责。为这些类想出更好的名称应该更容易。

(1) 我想大约十年前是在 OOPSLA 上。

(2) 一个错误。

【讨论】:

以上是关于“经理”Java的替代品[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java - JDBC替代品[关闭]

CKAN的替代品[关闭]

递归查询慢吗? [关闭]

Apache Camel 的替代品是啥 [关闭]

寻找 JasperReports 的替代品 [关闭]

OSGi 的替代品? [关闭]