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

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

哪个在Java中更好,

实现公共静态方法,比如

Factory.createLoginRequest() 

或实现Singleton模式,如

 Factory.getInstance().createLoginRequest() 

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

哪一个更好, 为什么

来自维基百科:

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

这取决于。

选择单身人士,因为:

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

使用静态方法,因为:

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

这取决于。 Singleton概念考虑了对象初始化的限制。 换句话说,singleton对象必须是运行时中单例类的唯一实例。 但是,如果您只需要创建某些类族的对象,那么请使用工厂方法模式。

我会选择Singleton,因为它允许您使用Java的面向对象的function,如inheritance(方法覆盖),这对静态方法不起作用。