单例和静态类的区别

大板牙花生 2014-07-02 06:40:50
单例需要静态方法生成,静态类不需要实例化,这两个究竟有何区别?
静态类中如果不同的地方对静态变量进行修改,得到的结果是一样的吗?如果如此为何还需要单例模式?
...全文
991 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijingli10 2015-10-12
  • 打赏
  • 举报
回复
静态类在程序启动的时候就已经写入内存 并永久存在
而单件在需要使用的时候创建,并且可以提供销毁内存的方法,在使用之后摧毁

代码都是一直存在于内存中的,单例创建的只是原来类的copy。

我比较赞同:
静态类没办法继承,这是我们有时候必须考虑使用单例模式的一个原因
zhousitiaoda 2014-07-03
  • 打赏
  • 举报
回复
会
大板牙花生 2014-07-03
  • 打赏
  • 举报
回复
引用 12 楼 yangyunzhao 的回复:
[quote=引用 2 楼 hanyuwei0 的回复:] 静态类是什么,求指教
我估计他是说所有方法和所有成员都是静态的[/quote] 是啊,名称是自创的,因为从JAVA转来,不大习惯,静态类就是方法变量都是静态的,完全跟实例无关。 如果一个实例对静态变量进行了修改,是否会影响到其他的多个实例呢?
yangyunzhao 2014-07-03
  • 打赏
  • 举报
回复
引用 2 楼 hanyuwei0 的回复:
静态类是什么,求指教
我估计他是说所有方法和所有成员都是静态的
baichi4141 2014-07-03
  • 打赏
  • 举报
回复
引用 8 楼 wter26 的回复:
[quote=引用 7 楼 xmnathan 的回复:] 但是有一点我觉得有些疑问,是不是静态类是线程安全(应该是吧?),单例不是? 还有如果一个实例对静态变量进行了修改,是否会影响到其他的多个实例呢? —————— 类是否线程安全和是否静态类没啥关系吧。 要看类的内部在处理数据时,有没有做并发处理,单件类也可以做到线程安全 静态方法是安全的 ,但是如果方法中用到了静态变量就变成不安全了
静态类中,如果没有使用类的静态变量,一定是安全的,但是单例的情况下,除非加入锁,否则怎么能实现线程安全啊?? [/quote] 是否线程安全,跟静态或者单例没有关系,只看这个类有没有会被多线程修改的数据 有这种数据,不管静态类还是单例模式都要加锁,没有这种数据,都不需要加锁
  • 打赏
  • 举报
回复
引用 8 楼 wter26 的回复:
静态类中,如果没有使用类的静态变量,一定是安全的,但是单例的情况下,除非加入锁,否则怎么能实现线程安全啊??
难道线程安全的前提是不能加锁吗?肯定可以加锁啊,加锁就是线程安全的一种方法啊
lm_whales 2014-07-03
  • 打赏
  • 举报
回复
C++没有静态类,可以用名空间实现静态类 Java静态类就是一组方法的封装,可以认为就是C,C++的全局函数(外部,静态)的某种组合。 单例是一种模式,是有状态的,所以需要一个全局性质的对象,储存状态。 Java静态类,可以没有状态,也可以有状态,看实现。
大板牙花生 2014-07-03
  • 打赏
  • 举报
回复
引用 7 楼 xmnathan 的回复:
但是有一点我觉得有些疑问,是不是静态类是线程安全(应该是吧?),单例不是? 还有如果一个实例对静态变量进行了修改,是否会影响到其他的多个实例呢? —————— 类是否线程安全和是否静态类没啥关系吧。 要看类的内部在处理数据时,有没有做并发处理,单件类也可以做到线程安全 静态方法是安全的 ,但是如果方法中用到了静态变量就变成不安全了
静态类中,如果没有使用类的静态变量,一定是安全的,但是单例的情况下,除非加入锁,否则怎么能实现线程安全啊??
  • 打赏
  • 举报
回复
但是有一点我觉得有些疑问,是不是静态类是线程安全(应该是吧?),单例不是? 还有如果一个实例对静态变量进行了修改,是否会影响到其他的多个实例呢? —————— 类是否线程安全和是否静态类没啥关系吧。 要看类的内部在处理数据时,有没有做并发处理,单件类也可以做到线程安全 静态方法是安全的 ,但是如果方法中用到了静态变量就变成不安全了
大板牙花生 2014-07-03
  • 打赏
  • 举报
回复
引用 3 楼 xmnathan 的回复:
静态类在程序启动的时候就已经写入内存 并永久存在 而单件在需要使用的时候创建,并且可以提供销毁内存的方法,在使用之后摧毁 而静态类的代码最简洁,单件稍微复杂些 静态类是对全局方法、全局变量的分类组织方法。 单件有且仅有一个对象。单件类可以被继承。 有些时候确实很模糊,使用任何一种方式皆可。 静态类改成实例类,需要更改所有的调用接口。 单件类接口可以不动,将创建实例交由调用方代码处理即可。
但是有一点我觉得有些疑问,是不是静态类是线程安全(应该是吧?),单例不是? 还有如果一个实例对静态变量进行了修改,是否会影响到其他的多个实例呢?
  • 打赏
  • 举报
回复
丫挺的 都说的太好了 没我说话的余地。。。
FightForProgrammer 2014-07-02
  • 打赏
  • 举报
回复
单例可以在需要的时候创建,而静态则需要一开始就创建,这样如果程序没有用到此类,单例可以节省开销
  • 打赏
  • 举报
回复
静态类在程序启动的时候就已经写入内存 并永久存在 而单件在需要使用的时候创建,并且可以提供销毁内存的方法,在使用之后摧毁 而静态类的代码最简洁,单件稍微复杂些 静态类是对全局方法、全局变量的分类组织方法。 单件有且仅有一个对象。单件类可以被继承。 有些时候确实很模糊,使用任何一种方式皆可。 静态类改成实例类,需要更改所有的调用接口。 单件类接口可以不动,将创建实例交由调用方代码处理即可。
hanyuwei0 2014-07-02
  • 打赏
  • 举报
回复
静态类是什么,求指教
threenewbee 2014-07-02
  • 打赏
  • 举报
回复
静态类没办法继承,这是我们有时候必须考虑使用单例模式的一个原因。
内容概要:本文介绍了WiFiSupply斯普莱WFS7000XB-F 5.8G 300M裸装防水型工业级大功率机载无线AP基站,该设备支持5.8GHz全频段(4920MHz~6100MHz),采用2T2R MIMO技术和TDMA时分多址机制,具备高达300Mbps的无线速率和150Mbps以上的实际吞吐量。设备发射功率达30dBm(1000mW),接收灵敏度为-96dBm,支持点对点桥接最远150公里以上。产品具备IP68防护等级,可在-45℃~85℃极端环境下稳定运行,支持POE双电源冗余供电,集成防浪涌、防静电、电磁屏蔽等多重防护设计。搭载斯普莱自研AI智能FastRoaming技术,实现20ms内的快速无缝漫游切换,支持VLAN、QoS、VPN、防火墙、巨量安全隧道等多项高级网络功能,并可通过云平台或本地进行集中管理,适用于工业4.0、智慧物流、AGV/AMR小车、无人机遥控等多种场景。; 适合人群:从事工业自动化、物联网、智能物流、无线网络工程等相关领域的技术人员及系统集成商,具备一定网络基础知识的工程师或项目决策人员。; 使用场景及目标:①用于AMR/AGV/RGV、巡检机器人、无人叉车等移动设备的高速稳定无线通信;②实现远距离无线桥接与全覆盖,如港口、矿山、仓储、轨道交通等复杂环境下的数据传输;③构建高安全、高可靠工业无线网络,支持PLC协议传输与远程集中管控; 阅读建议:此资源详细展示了产品的技术参数与应用场景,建议结合具体项目需求重点查阅其无线性能、防护等级、漫游能力和安全机制,以便在工业现场部署中发挥最优效能。

33,315

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧