我们有一个类,其中包含应用程序的配置信息。它曾经是一个单身人士。经过一些体系结构审查后,我们被告知删除单例。我们确实看到了在单元测试中不使用单例的一些好处,因为我们可以一次测试所有不同的配置。没有单例,我们必须在代码中的所有地方传递实例。变得太乱了,所以我们写了一个单例包装器。现在我们将相同的代码移植到PHP和.NET,我想知道是否有更好的模式可用于配置对象。
3 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
在谷歌测试博客有一系列的关于避免(以创建可测试的代码)辛格尔顿条目。也许这可以帮助您:
使用依赖注入避免单例
单身人士是病态的骗子
单身人士的根本原因
单身人士去哪儿了?
上一篇文章详细解释了如何将新对象的创建移入工厂,因此可以避免使用单例。值得一读。
简而言之,我们将所有新的操作员移至工厂。我们将寿命相似的所有对象归为一个工厂。
慕后森
TA贡献1802条经验 获得超5个赞
不要累积对单个配置对象的责任,因为它会以难以理解且脆弱的非常大的对象结尾。
例如,如果您需要特定类的另一个参数Configuration,则可以更改对象,然后重新编译使用该对象的所有类。这有些问题。
尝试重构您的代码,以避免一个通用的全局Configuration对象。仅将必需的参数传递给客户端类:
class Server {
int port;
Server(Configuration config) {
this.port = config.getServerPort();
}
}
应该重构为:
class Server {
public Server(int port) {
this.port = port;
}
}
一个依赖注入框架将有很大的帮助在这里,但它不是stricly要求。
添加回答
举报
0/150
提交
取消