初探单例模式学习笔记

一、如何防止一个类产生多个实例呢?

1.不做任何措施,贴出一幅海报,通知所有程序员不能对这个类创建多个实例  (不现实)

2.让这个类无法创建另一个实例    -> 单例模式

 

 

二、但是对类进行实例化,它的决定权在类的外部,如何将决定权回归类的自身呢?

-> 将构造函数变成private类型  ,不允许外界直接调用构造方法创建实例

 

 

 

 

三、但我们总要给外界提供一个途径获得类的实例

 

class T

{

        private T();

        public static T getInstance()

    {

       return new T();

    }

}


 

 

 

四、事实上现在允许创建第二个实例,如何防止呢
 

class T
{
	private static T t;
		
	private T()
	{
	}
	
	public static T getInstance()
	{
		if(t==null) t = new T();
		return t;
	} 
}


  

五、可以通过创建好对象,返回对象,来控制只有一个实例。如果创建过程复杂,可以写在静态块中。

 

/*
  单例模式
*/

class T
{
	private static T t;
	
	static{
	  t = new T(); 
	}
	
	private T()
	{
	}
	
	public static T getInstance()
	{
		//if(t==null) t = new T();
		return t;
	} 
}

public class A
{
	public static void main(String[] args)
	{
		T a = T.getInstance();
		T b = T.getInstance();
		
		System.out.println(a==b);
	}
}

 

 


 

六、静态块什么时候会执行它呢?

-> 当类第一次加载的时候

 

 

 

单例模式的变种:少例      ->对象池技术





 


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值