关于单例与静态类

很多时候,单例、静态类的区别和使用场景一直纠缠不清,也比较容易混淆,我整理分析了一下,现将相关区别、联系与使用场景做如下描述:

 

§ 单例

1、单例可以继承类,实现接口,体现OOP思想
2、单例可以被延迟初始化
3、单例类可以被集成,它的方法可以被覆写;也就是可以多态

4、垃圾回收:产生的唯一实例会一直驻留在内存中

5、使用场景:

(1)不存在比较复杂的事务管理,用单例比较好,eg:DAO初始化比较占系统资源的,如果用静态类方法来取,会不断地初始化和释放

(2)记录系统日志

(3)当要控制某个类在内存中实例个数只能有一个时

(4)只能多线程使用,那么多线程中实例变量就是多线程共享的,eg:windows的任务管理器,整个windows只需要一个实例

(5)在应用程序中,服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。

          这种方式简化了在复杂环境下的配置管理。管理过程中,一些中间耗时检测过程不用重复执行,带来响应速度的优化。

          不是必须这样,用普通类也一样实现,每次应用前实例化,用完销毁,相对来说性能差一些而已

 

§ 静态类

1、静态类不能继承类,实现接口,静态类是密封类,结构化编程时代的概念
2、静态类在第一次加载时初始化

3、垃圾回收:随着静态方法的执行完毕而及时回收

4、类可以有一个静态构造函数,但没有实例构造函数

5、使用场景:

(1)工具集HELPER

(2)使用静态类成员变量维护一个状态,使得可以让多实例共享这个变量,eg:统计使用

(3)可以用它来实现一些类似缓存的功能

 

§ 相似点

1、内存占用,两者相同

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值