java单例模式,所有变量都应该是类变量吗?

2024-01-04

如果一个类实现了单例模式,是否应该将所有变量声明为静态?

有什么理由不应该将它们声明为静态吗?这有什么不同吗?


不。单例模式只是意味着单个实例是唯一的实例——它并不意味着“使所有内容都可以静态访问”。

单例模式为您提供“单实例”的所有好处,而不牺牲测试和重构代码的能力。

Edit:

我想要指出的一点是,功能的使用方式(取决于上下文)和功能的初始化方式之间存在差异。

在大多数情况下,您的对象只有一个实例(例如,在最终的生产系统中)可能是合适的。但如果你强迫它成为唯一的选择,那么在其他情况下(例如测试)也会变得更加困难。

此外,使某些东西成为静态具有更重要的含义,而不仅仅是“我的类的只有一个实例应该可访问”——这通常是目的。

此外,在我开发的软件中,对象的初始化和生命周期通常由其他人控制(我在这里谈论 DI)——并且使某些东西静态化在这里确实没有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java单例模式,所有变量都应该是类变量吗? 的相关文章

  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 您网站上的自定义 jQuery 脚本有多少行代码?多少才算是太多呢?

    对于我们的网站 我使用了大量 jQuery 现在我正在查看基础库顶部的 340 行 jQuery 代码 多少是太多了 我将添加更多内容 我什么时候开始尝试压缩代码并最终转向 OOP 行数并不意味着什么 重要的是你实际上在做什么 您可能拥有
  • 空对象模式以避免空检查?

    最近 我遇到了空对象设计模式 我的同事说它可以用来消除整个代码中遇到的空指针检查 例如 假设 DAO 类返回有关 Customer 的信息 在名为 CustomerVO 的值对象中 我的主类应该提取名字和电子邮件 ID 并向客户发送电子邮件
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu

随机推荐

  • 使用 Serilog 的模式(通过 ILogger 与使用静态 Serilog.Log)

    背景 在一个新项目中Serilog被选为记录器 我自动开始传递ILogger界面 代码访问Log Logger从那时起 需要日志记录的类就会接受ILogger通过构造函数注入 我在这种做法上受到了挑战 建议是在Log类 例如Serilog
  • 实践方案使用哪种环境、IDE还是解释器?

    我一直在努力通过小阴谋家我想知道最好使用什么环境 IDE 或解释器来测试我自己记下的任何方案代码 Racket http racket lang org 前博士计划 http racket lang org new name html 有一
  • fseek/ftell 是否会给出错误的文件大小?

    在 C 或 C 中 可以使用以下命令返回文件大小 const unsigned long long at beg unsigned long long ftell filePtr fseek filePtr 0 SEEK END const
  • DNX (rc1) Web 命令不起作用

    我在运行 MVC6 应用程序时遇到问题 项目构建良好 没有错误 包加载正确 没有由于恢复而出现错误 这是我的 global json 代码 如您所见 应用程序中和机器上的 dnx 版本是相同的 https i stack imgur com
  • 通过复制现有表的结构来创建表

    我正在尝试使用 Management Studio 复制 SQL Server 2008 中的现有表来创建新表 现有表不包含任何数据 我正在使用以下代码 但收到 AS 附近语法错误的错误 我不确定这里出了什么问题 我是一个 SQL 新手 任
  • MySQL创建连接两个整个表的视图

    如何创建一个视图来合并两个不同表中不同的所有列 CREATE VIEW listView AS SELECT FROM tab1 h LEFT JOIN tab2 b ON h tID b tID WHERE value 0 这给了我错误
  • 后期操作中的模型更改在 Html.TextBoxFor 中不可见?

    这一定是非常明显的事情 但对我来说 它看起来很奇怪 我有简单的控制器 具有一个属性的模型以及显示属性值并呈现该属性的编辑器的视图 当我单击该按钮时 会发布表单并将感叹号附加到属性上 这个感叹号在我看来是可见的 但仅在p标签 不在input标
  • 为什么C#内存流要保留这么多内存?

    我们的软件通过一个解压缩某些字节数据GZipStream 它从a读取数据MemoryStream 这些数据以 4KB 块的形式解压并写入另一个块中MemoryStream 我们已经意识到进程分配的内存比实际解压缩的数据要高得多 例子 具有
  • 如何设置 Visual Studio Code 来运行和调试 ColdFusion 代码?

    是否可以配置 Visual Studio Code 安装在我的 Windows 10 客户端计算机上 来运行和调试 ColdFusion 代码 该代码位于服务器端在路径中C inetpub wwwroot dir dev 我在用着冷聚变 2
  • Mongodb 查询构造函数采用原始查询字符串 Java

    我试图提出一个概念来获取查询字符串并通过查询对象将其传递到类似的内容中 returnList mongoTemplateTracking find query TrackingData class COLLECTION NAME 我一直在查
  • Pandas 检查多行中的重叠日期

    我需要在大型设备上运行一个函数groupby检查两个子组是否有重叠日期的查询 以下是单个组的示例tmp ID num start stop subGroup 0 21 10 2006 10 10 2008 10 03 1 1 21 46 2
  • UITableViewCell 中复选标记的问题

    我已经实现了下面的代码 UITableViewCell cell tableView1 cellForRowAtIndexPath indexPath UITableViewCell cell2 tableView1 cellForRowA
  • 使用 JFrame 和 JPanel 的简单 Java 动画

    好的 所以该程序的目的只是绘制椭圆形并将其移动到屏幕上 该代码在 Eclipse 上编译时没有错误 但运行时 没有在屏幕上绘制或移动椭圆形 我一直在研究 似乎线程必须为此做很多事情 但是我需要一个线程来完成这个简单的程序吗 显然 我对使用
  • 如何判断B类是否是A类的子类?

    看来如果你为 Mac OS 开发 NSObject有isSubclassOfClass方法 但是当我检查同一个类的 iOS 类引用时 它没有该方法 并且 Xcode 抱怨该方法 我目前的解决方案是放置一个方法 void iAmClassB在
  • DataView RowFilter 中的撇号

    我有一个 DataView 我试图根据动态字符串进行过滤 dv RowFilter ContentTitle titleFilter 在某些情况下 titleFilter包含撇号 它会关闭过滤器查询并导致错误 有什么办法可以摆脱这个角色吗
  • 对微服务的 XA 支持

    Scenario 我有多个符合 XA 的数据库 前端有不同的微服务 这些微服务对它们执行 CRUD 操作 我需要在这些微服务之间执行两阶段提交 这意味着我有一个正在运行的服务器 它对这些微服务进行 API 调用以进行一些更新 并且这些更新应
  • 如何停止 Microsoft 认知 TTS 音频播放?

    我正在使用 Microsoft 认知服务语音 SDK 的 JavaScript 版本https github com Azure Samples cognitive services speech sdk https github com
  • PyQt 对齐复选框并将其放在每一行中

    我正在尝试做this http falsinsoft blogspot ro 2013 11 qtablewidget center checkbox inside cell html与复选框 遗憾的是 它是为 C 编写的 并且对 Pyth
  • 为什么我收到未读块数据 - 非法状态异常?

    我只有以下内容 JavaPairRDD
  • java单例模式,所有变量都应该是类变量吗?

    如果一个类实现了单例模式 是否应该将所有变量声明为静态 有什么理由不应该将它们声明为静态吗 这有什么不同吗 不 单例模式只是意味着单个实例是唯一的实例 它并不意味着 使所有内容都可以静态访问 单例模式为您提供 单实例 的所有好处 而不牺牲测