单列设计模式分为两种:饿汉式和懒汉式
单例设计模式:保证某个类中内存中只有一个对象,即是不能改变该类的对象,从而保证了其它的程序员不可以随便的改变该类的对象,好处就是保证对象的唯一性。
一般情况下,使用饿汉式的较多,因为比较的安全的,而懒汉式在多线程的时候容易出现安全问题。
(1)饿汉式:
class Person {
private Person(){}//将构造函数私有化,不让别的类建立该类对象
private static final Person p=new Person();//自己建立一个对象
public static Person getInstance()//提供一个公共访问方式
{
return p;
}
}
(2)懒汉式:
class Person {
private Person(){}
private static Person p;
public static Person getInstance()
{
if(p==null)
p=new Person();
return p;
}
}
当然在多线程中也有解决的办法,可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,
所以可以加双重判断来提高程序效率。
如将上述懒汉式的Instance函数改成同步:
public static Person getInstance()
{
if(p==null)
{
synchronized( Person.class)
{
if(p==null)
p=new Person();
}
}
return p;
} |