静态与单例 转载

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

 

§ 单例windows

一、单例能够继承类,实现接口,体现OOP思想缓存

二、单例能够被延迟初始化服务器

三、单例类能够被集成,它的方法能够被覆写;也就是能够多态多线程

四、垃圾回收:产生的惟一实例会一直驻留在内存中函数

五、使用场景:工具

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

(2)记录系统日志优化

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

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

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

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

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

 

§ 静态类

一、静态类不能继承类,实现接口,静态类是密封类,结构化编程时代的概念

二、静态类在第一次加载时初始化

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

四、类能够有一个静态构造函数,但没有实例构造函数

五、使用场景:

(1)工具集HELPER

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

(3)能够用它来实现一些相似缓存的功能

 

§ 类似点

一、内存占用,二者相同

相关文章
相关标签/搜索