黑马学员《单例设计模式》

---------------------------ASP.Net+Android+IOS开发java培训、期待与您交流! ---------------------------------

 一、单例设计模式

1、 我的理解:单例就是一个对象或者说是有有限的对象,避免其他的程序可以过多的创建此对象,这样就可以操作    特定的对象形成统一的现象。所有对象都共享同样的信息,就定义成单例模式。便于管理,安全。

2、设计模式: 框架,解决这一类问题最行之有效的方法
      java中23种设计模式
    单例设计模式:解决一个类在内存只存在一个对象

  
3、保证对象的唯一性。
  思想:1、为力避免其他程序过多建立该类对象,先禁止其它程序建立该类对象
             2、还为了让其它程序可以访问到该类对象,只好在本类中,自定义一个对象
             3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
  

 4、这三部怎么用代码体现呢?

   步骤:
  1、将构造函数私有化,private---避免其它类创建此类对象。
  2、在类中创建一个本类对象---为了可以操作本类的中的成员
  3、提供一个方法,返回在本类中实例化的对象---为了可以让其它类可以获取到该对象。
  
   对于事物该怎么描述,还怎么描述
   当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。

二、单例模式:懒汉式和饿汉式

           便于理解的记忆方法:饿汉式就是一个人非常饿,所以他进来就吃(就是先实例化),懒汉式就是一个人非常懒,那么他什么时候饿什么时候才做,才吃(就是后实例化,就是什么时候用到,什么时候实例化)

1.饿汉式----模式代码

              饿汉式就是先实例,只要是类一加载,那么次对象就存在。

/*第一种方法
 * 这个是先初始化对象
 * 成为:饿汉式
 * single类一进内存,就已经创建好了对象

 * /
class Single
{
	private static Single s=new Single();//先初始化
	private Single(){};
	public static Single getInstance()
	{
		return s;
	}
}
2、懒汉式---模式代码

    对象是方法被调用时,才初始化,也叫做对象的延时加载,
//single 类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象


class Single3
{
	private static Single3 s=null;
	private Single3(){};
	public static Single3 getInstance()
	{
		if(s==null){
			synchronized(Single.class)//锁
			{
				if(s==null)
					s=new Single3();//后初始化	
			}	
		}
		return s;
	}
}

3、懒汉式增加安全性

class Single2{  
    private static Single s=null;  
    private Single(){}  
    public static Single getInstance(){  
        if(s==null){  
            synchronized(Single.class){//多重判断,方便与线程的安全性  
                if(s==null){  
                    s=new Single();  
                }  
            }  
            return s;  
        }  
    }  
}  

从以上分析,一般我采用饿汉式编程,懒汉式麻烦而且有安全隐患。


---------------------------ASP.Net+Android+IOS开发java培训、期待与您交流! --------------------------------










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值