静态方法还是单例,选择哪一个?[已关闭]

可能的副本:
静态类和单例模式之间的区别?

哪个在Java中更好,

实现公共静态方法,如

Factory.createLoginRequest()

或实现单例模式,如

Factory.getInstance().createLoginRequest()

(两者都将返回一个 Request 对象。

哪一个更好,为什么


答案 1

来自维基百科:

请注意类的简单静态实例和单例之间的区别:尽管单例可以作为静态实例实现,但它也可以懒惰地构造,在需要之前不需要内存或资源。另一个值得注意的区别是静态成员类无法实现接口,除非该接口只是一个标记。因此,如果类必须实现由接口表示的协定,则它实际上必须是单例。


答案 2

这要视情况而定。

选择单例,因为:

  • 一般来说,我会说单例稍微整洁一些,因为它允许您在(私有)构造函数中/从中对单例对象进行一些初始化。
  • 当后来决定此对象不应再是单例时(由于新的见解或新要求),重构它更容易:您只需要更改获取实例的所有位置,而不是对静态方法的所有调用。

使用静态方法,因为:

  • 在Android的特定情况下,为了提高性能,您可能更喜欢静态方法 - 我怀疑调用静态函数可能比在单例对象上调用方法更快(更容易针对编译器进行优化)。

推荐