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

时间:2011-09-07 06:36:35

标签: java android design-patterns static singleton

  

可能重复:
  Difference between static class and singleton pattern?

Java中哪个更好,

实现公共静态方法,例如

Factory.createLoginRequest()

或实施Singleton模式,如

Factory.getInstance().createLoginRequest()

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

哪一个更好,为什么

4 个答案:

答案 0 :(得分:7)

取决于。

选择单身人士,因为:

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

使用静态方法,因为:

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

答案 1 :(得分:7)

来自维基百科的

  

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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