静态类和单例模式区别 工具类 单例模式

观点一:(单例)

单例模式比静态方法有很多优势:

首先,单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员);

其次,单例可以被延迟初始化,静态类一般在第一次加载是初始化;

再次,单例类可以被集成,他的方法可以被覆写;

最后,或许最重要的是,单例类可以被用于多态而无需强迫用户只假定唯一的实例。举个例子,你可能在开始时只写一个配置,但是以后你可能需要支持超过一个配置集,或者可能需要允许用户从外部从外部文件中加载一个配置对象,或者编写自己的。你的代码不需要关注全局的状态,因此你的代码会更加灵活。

观点二:(静态方法)静态方法中产生的对象,会随着静态方法执行完毕而释放掉,而且执行类中的静态方法时,不会实例化静态方法所在的类。如果是用singleton, 产生的那一个唯一的实例,会一直在内存中,不会被GC清除的(原因是静态的属性变量不会被GC清除),除非整个JVM退出了。这个问题我之前也想几天,并且自己写代码来做了个实验。

观点三:(Good!)

由于DAO的初始化,会比较占系统资源的,如果用静态方法来取,会不断地初始化和释放,所以我个人认为如果不存在比较复杂的事务管理,用singleton会比较好。个人意见,欢迎各位高手指正。

http://blog.csdn.net/v1v1wang/article/details/5511756

静态类和单例模式区别 工具类 单例模式
-----------------------------------------------------------------------------------------------------------

这里暂且把单例模式限定为不是全用静态函数实现的。

1。使用的方便性:如果需要初始化工作,单例模式可以在构造函数里面完成,全静态函数的类需要一个额外的函数来完成初始化工作,而且使用者如果没有调用这个initialize函数,那么后续的操作就会有问题,构造函数会被默认调用,所以使用起来比较简单,对使用者做出了最少的假设。

2。初始化时机:单例模式初始化比较灵活,可以在需要的时候初始化,而全静态函数必然导致成员全为静态成员,静态成员是在编译时就初始化好了。如果初始化成本比较昂贵,并且程序里面未必一定使用这个类,那这将是单例模式的一个很大优势。顺便说一下全局变量,全局变量的初始化顺序是未指定的。

例如 全局变量int a; int b;编译器是先初始化a还是先初始化b?我想大家只能靠猜,或者在某个编译器上实验一下给出答案,一旦要是有个新编译器,结果又会是什么样子呢?

3。最重要的区别:单例模式可以有多态,而全静态的类不能支持多态。

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/138304.html

更多阅读

纯露和花水的区别 纯露可以当爽肤水用吗

纯露和花水的区别——简介国际上通行的叫法,hydrosol,hydralat,floral water 是一个概念,所以纯露=花水。国内市场混乱,没有统一标准。要看纯露和花水的区别,我们要看到事物的本质,纯露或者花水,是指100%纯天然植物提取的,没有添加化学成分

水货和行货有什么区别 怎么区分行货和水货

水货和行货有什么区别——简介水货指在某国家或地区没有经过原生产厂家所指定的销售代理而进行销售的产品。水货不是假货。“水货”一词的由来,是因为早期走私者为逃避关税等原因,将国外船运过来的商品用塑料袋等密封好后投入约定的浅

TD-LTE和FDD-LTE的区别 tdlte能用联通4g吗

TD-LTE和FDD-LTE的区别——简介TD-LTE和FDD-LTE都是未来4G网络的标准模式,随着4G网络的不断进化,这两种模式也得到了普遍的应用。在中国,中国移动率先布局了4G网络,采用了TD-LTE网络制式。但是,很多人不了解TD-LTE和FDD-LTE的区别。TD-L

全日制研究生和在职研究生的区别 在职研究生是全日制吗

全日制研究生和在职研究生的区别——简介如今很多有志之士都会考虑提升自己的学历,也期望学历的提升有助于今后工作待遇提高,于是部分已工作几年的人士想读在职研究生。不少人认为:在职研究生是花钱买文凭。事实真的是这样吗?另外:全日制

声明:《静态类和单例模式区别 工具类 单例模式》为网友生气别把爱带走分享!如侵犯到您的合法权益请联系我们删除