静态方法和单例,选择哪一个?

发布于 2024-12-03 05:04:06 字数 434 浏览 1 评论 0原文

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

Java中哪个更好,

实现公共静态方法,例如

Factory.createLoginRequest()

或实现单例模式,例如

Factory.getInstance().createLoginRequest()

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

哪一个更好,为什么

Possible Duplicate:
Difference between static class and singleton pattern?

Which is better in Java,

implementing public static methods, like

Factory.createLoginRequest()

or implementing Singleton pattern, like

Factory.getInstance().createLoginRequest()

(Boths will return a Request object.)

Which one is better and why ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

忆依然 2024-12-10 05:04:06

来自维基百科:

请注意类的简单静态实例和单例之间的区别:虽然单例可以实现为静态实例,但它也可以延迟构造,在需要时不需要内存或资源。另一个显着的区别是静态成员类不能实现接口,除非该接口只是一个标记。因此,如果类必须实现由接口表示的契约,那么它确实必须是单例。

from wikipedia:

Note the distinction between a simple static instance of a class and a singleton: although a singleton can be implemented as a static instance, it can also be lazily constructed, requiring no memory or resources until needed. Another notable difference is that static member classes cannot implement an interface, unless that interface is simply a marker. So if the class has to realize a contract expressed by an interface, it really has to be a singleton.

执手闯天涯 2024-12-10 05:04:06

这取决于。

选择单例,因为:

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

使用静态方法,因为:

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

It depends.

Choose singletons, because:

  • In general, I'd say a singleton is slightly neater because it allows you to do some initialization of the singleton object in/from the (private) constructor.
  • When it is later decided this object should no longer be a singleton (due to new insights or new requirements), it is easier to refactor it: you just need to change all the places that get the instance, instead of all calls to the static methods.

Use static methods, because:

  • In the specific case of android, you might prefer static methods for performance - I suspect calling a static function might be a bit faster (easier to optimize for the compiler) compared to calling a method on a singleton object.
三生一梦 2024-12-10 05:04:06

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

It depends. Singleton concept considers a limitation on object initialization. In other words, singleton object must be the only instance of a singleton class in the runtime. But if you just need to create objects of some family of classes, then go with factory method pattern.

蓝眸 2024-12-10 05:04:06

我会选择 Singleton,因为它允许您使用 Java 的面向对象功能,例如继承(方法重写),而这不适用于静态方法。

I'd go for the Singleton because it allows you to use Java's object-oriented features like inheritance (method overriding) which won't work for static methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文