当前位置: 首页 > 面试题库 >

Java Singleton的替代方案是什么

严成礼
2023-03-14
问题内容

我们有一个类,其中包含应用程序的配置信息。它曾经是一个单身人士。经过一些体系结构审查后,我们被告知删除单例。我们确实看到了在单元测试中不使用单例的一些好处,因为我们可以一次测试所有不同的配置。

没有单例,我们必须在代码中的所有地方传递实例。变得太乱了,所以我们写了一个单例包装器。现在我们将相同的代码移植到PHP和.NET,我想知道是否有更好的模式可用于配置对象。


问题答案:

在谷歌测试博客有一系列的关于避免(以创建可测试的代码)辛格尔顿条目。也许这可以帮助你:

  • Using dependency injection to avoid singletons
  • Singletons are Pathological Liars
  • Root Cause of Singletons
  • Where have all the Singletons Gone?

简而言之,我们将所有新运营商移至工厂。我们将寿命相似的所有对象归为一个工厂。



 类似资料:
  • 我正在努力翻阅这本生锈的书。在“字符串”一章中,许多示例使用了_string(),我的编译器版本(rustc 1.0.0-dev)给出了以下警告 代码: 我从这个问题中了解到,这是因为API可能会更改,但我想知道如果我想转换字符串片段(str),我应该使用什么来代替它

  • 问题内容: 我有一个字符串数组,每个字符串包含3个字母。每3个字母(每个元素)对应一个唯一字母。我需要从字符串数组创建一个char数组。 我能想到的唯一方法是遍历字符串数组中的每个元素,并使用一个长的switch语句来确定其关联的单个字符。 还有什么其他方法可以实现? 问题答案: 如果是映射/查找,那么通常地图/词典可以解决您的问题。C#中的此类结构示例: 如果有这样的映射,则只需从映射中查找字母

  • RxJava中是否有与RxAndroid中的AndroidSchedulers.mainThread()同义的Scheduler api。因此,如果我在一个新线程上安排一个任务,并且我想在Java主线程上观察它,我将如何做到这一点? 下面的edit是一个RxSubscription示例,带有system。在注释中,主线程被终止,而可观察线程被终止。interval在单独的线程上运行。在Androi

  • 问题内容: 当我使用MSTest Framework并复制Selenium IDE为我生成的代码时,MSTest无法识别和。有什么替代方法? 问题答案: 您将分别使用和。

  • 问题内容: 我现在正在使用Entity Framework,并且由于实体框架不支持全文搜索和其他功能,因此经常不得不编写内联sql。是否有一个具有许多支持高级查询功能的ORM?我觉得如果我有时要编写内联sql,那么我也最好在内联sql中做所有这些事情。这里有什么帮助 问题答案: 看一眼: 在DataObjects.Net中的LINQ查询。如果您对最复杂的部分感兴趣,请从尾部开始。 DataObje

  • 在RxJava 2和Reactor中,如果当前流中没有元素,则有一种类似switchIfEmpty的方法来切换到新流。 但是当我开始使用Minute时,当我将Quarkus样本转换为使用反应特性时,我找不到替代方法。 目前我的解决方案是:在我的PostRepository中,我使用一个异常来表示没有找到帖子。 并在中捕获它。 如何在中返回表示0或1元素,并在中使用类似的方法来构建流的替代路径?