静态方法还是Singleton,哪一种可供选择?

Moh*_*san 15 java singleton static android design-patterns

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

哪个在Java中更好,

实现公共静态方法,比如

Factory.createLoginRequest()
Run Code Online (Sandbox Code Playgroud)

或者实现Singleton模式,比如

Factory.getInstance().createLoginRequest()
Run Code Online (Sandbox Code Playgroud)

(Boths将返回一个Request对象.)

哪一个更好,为什么

Arn*_*len 7

这取决于.

选择单身人士,因为:

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

使用静态方法,因为:

  • 在android的特定情况下,您可能更喜欢静态方法的性能 - 我怀疑与调用单个对象上的方法相比,调用静态函数可能会更快(对编译器更容易优化).


Mah*_*azi 7

来自维基百科:

注意类的简单静态实例和单例之间的区别:虽然单例可以实现为静态实例,但它也可以延迟构造,在需要之前不需要任何内存或资源.另一个值得注意的区别是静态成员类无法实现接口,除非该接口只是一个标记.因此,如果类必须实现由接口表示的契约,那么它实际上必须是单例.