【发布时间】:2009-07-29 07:25:36
【问题描述】:
仔细阅读有关单例的事实(代码味道,而不是模式)后,我想知道:
如何重构我的代码以摆脱它们?
尽管几乎每个人都同意糟糕的单身人士很糟糕,但我找不到任何关于如何替换它们的实用建议。要么非常琐碎,要么非常困难。
我可以想到一些方法,但所有这些方法似乎都使我的代码非常臃肿。
例如,假设我有一个“全局”AppConfig 类,它包含有关产品的许可信息并描述用户可用的功能。
我能想到的:
- 为我的项目的每个类创建一个公共基类,其中包含一个
AppConfig实例。 (不好:对于已经有基类的情况,例如表单,这是不可能的) - 使用
setAppConfig方法创建一个通用接口。 - 创建一个可以创建
AppConfig实例的全局AppConfigFactory(错误:只能将问题转移到另一个类) - 将实例作为参数传递给每个需要它的方法。 (坏:代码膨胀)
- ...
我能做什么?
编辑: 澄清:我在我的代码中发现了一个错误的单例。现在我想重构我的代码以删除它。我正在寻求有关如何实现这一目标的提示和一般想法。
【问题讨论】:
-
看起来像 stackoverflow.com/questions/86582/… 的副本
-
这不是重复的,至少不是您提出的问题。我不想知道单例的正确用法或优缺点。我有一个不好的单身人士,我想删除它,我想知道最好的方法。
-
单例设计模式和单例代码异味有什么区别?
-
单例代码异味本质上是对单例模式的误用:code.google.com/p/google-singleton-detector/wiki/…
标签: design-patterns oop