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

Java中的Singleton模式和静态类有什么区别?

牛越
2023-03-14
问题内容

单例与仅填充静态字段的类有何不同?


问题答案:

几乎每次我编写静态类时,我最终都希望自己将其实现为非静态类。考虑:

  • 可以扩展非静态类。多态可以节省很多重复。
  • 非静态类可以实现接口,当您要将实现与API分开时,该接口会派上用场。

由于这两点,非静态类使编写依赖它们的项目的更可靠的单元测试成为可能。

但是,单例模式距离静态类仅半步之遥。你_那种_得到这些好处,但如果你是直接与其它类中通过`ClassName.Instance”访问它们,你要创建一个障碍访问这些好处。就像ph0enix指出的那样,使用依赖项注入模式会更好。这样,可以告诉DI框架特定类是(或不是)单例。您将获得模拟,单元测试,多态性和更多灵活性的所有好处。



 类似资料:
  • 问题内容: 谁能提供一个简单的示例来说明Java中动态和静态多态性之间的区别? 问题答案: 多态性 1.静态绑定/编译时绑定/早期绑定/方法重载。(在同一类中) 2.动态绑定/运行时绑定/后期绑定/方法重写(在不同的类中) 重载示例: 首要示例:

  • 问题内容: 请参见下面的代码段: 代码1 代码2 这些代码段之间有什么区别?两者都15作为答案输出。 问题答案: 静态方法属于类本身,而非静态(aka实例)方法属于从该类生成的每个对象。如果你的方法执行的操作不依赖于其类的单个特征,请将其设置为静态(这将使程序的占用空间减小)。否则,它应该是非静态的。 例: 你可以像这样调用静态方法:。如果你使用method2尝试该操作,它将失败。但这将起作用:;

  • 问题内容: 这个问题的标题实际上是先前的考试问题,我正在寻求澄清/答案。 请注意,我正在学习Java并逐渐熟悉它的语法。 我了解可能曾经有人问过这个问题,如果可以,有人可以告诉我在哪里可以访问该问题?如果是这种情况,也请接受我的歉意。为了表明我一直在研究这一领域,我个人的理解是实例变量属于某个类(模板)的对象/实例,并且可以在需要时在该实例/对象内进行更改(变异)。 类变量是仅具有一个副本且可以访

  • 有人能提供一个简单的例子来解释Java中动态多态性和静态多态性之间的区别吗?

  • 问题内容: 模块声明中的 require 和 require静态 模块语句之间有什么区别? 例如: 问题答案: 一条子句表示在编译和运行时需要所需的模块。因此,当模块系统在模块解析(处理模块描述符和解决依赖关系的阶段)期间遇到此类子句时,它将搜索可观察模块(JDK和模块路径中的模块)的范围,并引发错误如果找不到模块。 一个从句表示的依赖是在运行时可选。这意味着在编译时,模块系统的行为完全如上所述。

  • 问题内容: 我可以在Swift库中看到这些定义: 定义为的成员函数与定义为的另一个成员函数有什么区别?仅仅是为了结构和枚举的静态功能,以及用于类和协议吗?还有其他应该知道的区别吗?在语法本身中具有这种区别的原理是什么? 问题答案: 是否仅将static用于结构和枚举的静态函数,将class用于类和协议? 那是主要区别。其他一些区别是类函数是动态调度的,并且可以被子类覆盖。 协议使用class关键字