新手理解 java的单立模式

新手上路,请多指教!

  java中那么多模式设计,其中有一个就是单例模式(singleton) 在有些情况下在内存中一个对象必须要有一个实例,比如打印机接收打印请求的时候。这个时候就要隐藏对象的实例话,也就是隐藏全部的构造函数。自建对象,通过别的方法给外部调用。

如下:

class SingletonDemo{

//影藏构造函数,我们也空参构造函数为例

private SingletonDemo(){}

//自己创建自己的对象

private SingletonDemo singleton = new SingletonDemo();


//定义一个方法提够给外部,创建对象


public static  SingletonDemo   singletonDemoInstance(){

return  singleton;

}



以上的设计模式也是在单例模式中叫做饿汉模式(看,它多饿,一上场就实例话对象了)。还有一个懒汉式的



class SingletonDemo{

//影藏构造函数,我们也空参构造函数为例

private SingletonDemo(){}

//自己创建自己的对象

private SingletonDemo singleton =null;


//定义一个方法提够给外部,创建对象


public static  SingletonDemo   singletonDemoInstance(){

if(singleton==null){

singleton=new SingletonDemo();

}

return  singleton;

}


懒汉始是在给外部方法时,实例话对象,这是不考虑其他情况下的区别。但是懒汉拾在需要时实例话,节约了资源,而饿汉式,在类加载时就实例话,可能造成资源浪费。当然个人推荐饿汉式的,因为再多线程中懒汉式,在if判断时,线程不安全,创建对象可能能创建多个。但也可以以下改造下:

public static  SingletonDemo   singletonDemoInstance(){

if(singleton==null){ //创建那次进入锁,第二次开始不用进,节约时间提高执行速度

synchronized(SinletonDemo.class){

if(singleton==null){

singleton=new SingletonDemo();

}

}

}

return  singleton;

}


你可能感兴趣的:(新手理解 java的单立模式)