新手理解 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;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值