单例设计模式
设计模式:是解决问题的一种行之有效的思想。
单例设计模式:保证了一个类在内存中只能有一个对象。
比如多个程序访问同一个配置文件,希望多个程序的操作都是同一配置文件中的数据,那么就需要保证该配置文件对象的唯一性。
步骤:
1、不让自他程序创建该类的对象,将该类中的构造函数私有化。
2、在本类中创建一个本类对象。
3、定义一个公有方法,返回值类型是本类类型,让其他程序通过该方法就可以访问到该类独享。
单例,饿汉式,类一加载就创建对象。一般开发都用饿汉式,但是当多线程操作的时候存在安全隐患。
publicclass Single {
privatestatic Singleinstanse =new Single();
private Single(){}
publicstatic Single getInstanse(){
returninstanse;
}
}
懒汉式,单例的延迟加载方式。
publicclass Single2 {
privatestatic Single2instance =null;
private Single2(){}
publicstatic Single2 getInstatnce(){
if(instance==null)
instance =new Single2();
returninstance;
}
}
懒汉式的多线程处理:双重判断,用双重判断可以减少对锁的判断,减少对资源的占用,所以用双重判断,比较高效。
//单例,懒汉式的安全写法。
publicclass Single3
{
privatestatic Single3instance =null;
private Single3(){}
publicstatic Single3 getInstance()
{
//这里判断是否为空,第一次判断这里时instance为空,满足,然后会判断锁,第二次后判断不为空,就不会再对锁进行判断。。
if(instance==null)
{
synchronized(Single3.class)
{
//第一次判断为null,满足,给instance赋值。
if(instance==null)
instance =new Single3();
}
}
returninstance;
}
}}