设计模式是解决某一类问题最行之有效的办法,Java中有23种设计模式。单例设计模式解决一个类在内存中只存在一个对象。想要保证对象唯一:(1)为了避免其它程序过多建立该类对象,先禁止其它程序建立该类对象;(2)同时为了让其它程序可以访问到该类对象,只好在本类中,自定义一个对象;(3)为了方便其它程序对自定义对象的访问,可以对外提供一些访问方式。 代码如下:
class single{
private static single s=new single();
private single(){
}
public static single getInstance(){
return s;
}
}
上例在对象被使用前先初始化创建,称为饿汉式。下例是对象在被使用时才初始化创建,称为懒汉式,也称为对象的延迟加载。
代码如下:
class single1{
private static single s=null;
private single(){
}
public static single getInstance(){
if(s==null)
return new single();
return s;
}
}
single类加载进内存时,single对象就已经存在于堆内存中,而single1类加载进内存时,single对象要等到被使用时才创建在堆内存中。
采用懒汉式要注意多线程的安全问题,需要对getInstance()方法加同步。
class single1{
private static single s=null;
private single(){
}
public static synchronized single getInstance(){
if(s==null)
return new single();
return s;
}
}
加同步后,程序运行就比较低效,可加双重判断,减少判断锁的次数,但代码编写较为复杂。
class single1{
private static single s=null;
private single(){
}
public static single getInstance(){
if(s==null){
synchronized(single.class){
if(s==null)
return new single();
}
}
return s;
}
}
实际编程时,多采用饿汉式。
|
|