|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net网页编程比java好。
不完整的单例类
甚么是不完整的单例类
估量有些读者见过上面如许的“不完整”的单例类。
代码清单10:“不完整”单例类
packagecom.javapatterns.singleton.demos;
publicclassLazySingleton
{
privatestaticLazySingleton
m_instance=null;
/**
*公然的机关子,外界能够间接实例化
*/
publicLazySingleton(){}
/**
*静态工场办法
*@return返还LazySingleton类的唯一实例
*/
synchronizedpublicstatic
LazySingletongetInstance()
{
if(m_instance==null)
{
m_instance=newLazySingleton();
}
returnm_instance;
}
}
下面的代码乍看起来是一个“懒汉”式单例类,细心一看,发明有一个公然的机关子。因为外界可使用机关子创立出恣意多个此类的实例,这违反了单例类只能有一个(或无限个)实例的特征,因而这个类不是完整的单例类。这类情形偶然会呈现,好比javax.swing.TimerQueue即是一例,关于这个类,请拜见《Java与形式》一书中的“察看者形式与Swing准时器”一章。
形成这类情形呈现的缘故原由有以下几种大概:
(1)初学者的毛病。很多初学者没有熟悉到单例类的机关子不克不及是公然的,因而犯下这个毛病。有些初学Java言语的学员乃至不晓得一个Java类的机关子能够不是公然的。在这类情形下,计划师大概会经由过程自我束缚,也就是说不往挪用机关子的举措,将这个不完整的单例类在利用中作为一个单例类利用。
在这类情形下,一个复杂的改正举措,就是将公然的机关子改成公有的机关子。
(2)现在出于思索不周,将一个类计划成为单例类,厥后发明此类应该有多于一个的实例。为了填补毛病,爽性将机关子改成公然的,以便在必要多于一个的实例时,能够随时挪用机关子创立新的实例。要改正这类情形较为坚苦,必需依据详细情形做出改善的决意。假如一个类在最后被计划成为单例类,但厥后发明实践上此类应该有无限多个实例,这时候候应该思索是不是将单例类改成多例类(Multiton)。
(3)计划师的Java常识很好,并且也晓得单例形式的准确利用办法,可是仍是成心利用这类不完整的单例形式,由于他意在利用一种“改进”的单例形式。这时候候,撤除共有的机关子不切合单例形式的请求以外,这个类必需是很好的单例形式。
<p>
主要缺点就是:速度比较慢,没有C和C++快 |
|