- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否存在与 Enum Singleton Pattern 相关的(性能)处罚*无论如何,它似乎比经典的单例模式或内部持有者类习惯用法更少使用?
* 惩罚,例如在不需要时的可串行化成本等,或者使用率较低,因为很少有开发人员阅读Effective Java 第二版?
最佳答案
所有 Java 单例模式(包括私有(private)构造函数和静态访问器的标准)都有这个不好的属性,如果您测试它们(或测试任何远程依赖于它们的东西),只能使用这个对象。
例如,如果您想测试依赖于 PrintingSingleton
的 PrintingService
类,您将无法用模拟替换此打印单例,因为它是静态绑定(bind)的。
即想象一下测试这个功能
boolean printDocument(Document d) {
if (PrintingSingleton.INSTANCE.isPrinterEnabled()) {
PrintingSingleton.INSTANCE.print(d);
}
throw new RuntimeExeption("Printing not enabled");
}
通过测试
@Test(expectedExceptions = {RuntimeException.class})
public void testPrinting() {
PrintingService service = ...
service.print(new Document()); // How will you simulate
// throwing an exception?
}
就我个人而言,我会避免以这种方式使用单例,而是通过 Guice、Spring 或 Pico Container 引入依赖注入(inject)。这样您就可以确保只存在一个对象,同时不会限制自己无法模拟该对象(例如用于测试)。
关于java - Enum 单例有惩罚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149633/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
如果我使用 Eigen 的成员函数 Matrix3Xf 矩阵 myMatrix.middleCols(a, b) with a = 0, b = myMatrix.cols() -1,我得到了性能损失
我有一个关于 SEO 的小问题,尤其是对于 Google。在 WooCommerce 中,您可以将产品添加到类别中,也可以为产品添加产品标签。 所以我的问题是,当我有一个产品,例如梅赛德斯汽车,并将其
我正在制作一个网站,该网站将对 Internet 上数十万个其他网站的隐私政策进行审查。它的初始内容基于我对 CommonCrawl 的运行50 亿页网页转储和 analyzing all the p
我正在考虑使用 HTML5 数据属性来更轻松地为我的应用程序编写第三方脚本。因此,考虑两种情况: 页面上有 10'000 个 HTML 元素,如 Sticker . 还有其他 10,000 个 HTM
像这样在相应的设备上显示视网膜和非视网膜: 有效。但是 Google Pagespeed Insight 告诉我们在加载 CSS 之前它无法呈现它,我们因此受到惩罚。但是,仅在移动
我正在开发一个基于 Bootstrap 的响应式网站。主网站导航中的下拉菜单是通过单击而不是悬停打开的。每个部分没有索引内容,只有下拉列表中的特定页面链接。 如果内容位于: 是否会受到 SEO 惩罚
给定 vector 加法: NPNumber NPNumber::plus(const double o) const { vector c; for (double a : va
我正在使用带有 LogisticRegression 的嵌入式方法(L1 - Lasso)运行分类问题的特征选择过程。 我正在运行以下代码: from sklearn.linear_model imp
我是一名优秀的程序员,十分优秀!