首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >静态类和单例模式的区别?

静态类和单例模式的区别?
EN

Stack Overflow用户
提问于 2009-02-06 08:13:23
回答 19查看 582.7K关注 0票数 1.9K

静态类和单例模式之间有什么真正的(即实用的)区别?

两者都可以在不实例化的情况下调用,它们都只提供一个“实例”,而且它们都不是线程安全的。还有其他区别吗?

EN

回答 19

Stack Overflow用户

发布于 2009-02-06 08:30:57

与静态类相比,单例模式有几个优点。首先,单例可以扩展类和实现接口,而静态类不能(它可以扩展类,但不继承它们的实例成员)。单例可以延迟或异步初始化,而静态类通常在第一次加载时初始化,这会导致潜在的类加载器问题。然而,最重要的优点是,单例可以多态处理,而不会迫使用户假设只有一个实例。

票数 175
EN

Stack Overflow用户

发布于 2010-12-31 04:55:55

static类不适用于任何需要状态的东西。它对于把一堆函数放在一起很有用,比如Math (或者项目中的Utils )。因此,类名只是给我们提供了一个线索,我们可以在哪里找到函数,仅此而已。

Singleton是我最喜欢的模式,我使用它在单点进行管理。它比static类更灵活,可以维护它的状态。它可以实现接口,继承其他类,并允许继承。

我在staticsingleton之间选择的规则

如果有一堆函数应该放在一起,那么static是最好的选择。任何其他需要对某些资源进行单一访问的东西,都可以作为singleton实现。

票数 86
EN

Stack Overflow用户

发布于 2009-02-06 08:35:14

静态类是只有静态方法的类,更好的说法是“函数”。静态类中体现的设计风格纯粹是过程化的。

另一方面,Singleton是一种特定于OO设计的模式。它是一个对象的实例(具有其固有的所有可能性,例如多态性),具有一个创建过程,该过程确保在该特定角色的整个生命周期中只有一个实例。

票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/519520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档