黑马程序员---单例模式


------- android培训java培训、期待与您交流! ----------------

设计模式,为了解决开发中的实际问题出现的思想
单例:解决一个类的对象,在内存的唯一性。这个类的对象,只有一个
实现单例设计模式的步骤:
  A. 私有修饰构造方法
  B. 在本类的成员位置,new自己类的对象
  C. 提供一个静态方法,返回本类的对象

如果其他程序,需要这个类的对象,不能去new ,通过方法的返回值,获取该类对象

 

饿汉式:

package cn.itcast;
/*
 * 此类实现一个单例设计模式
 * 要求Single类的对象,是唯一的
 * 饿汉式
 */
public class Single {
	//私有构造方法
		private Single(){}
	  //自己类的成员位置上,创建自己类的对象
		private static final Single s = new Single();
		//提供一个公共方法,静态的,返回这个变量s
		public static Single getInstance(){
			return s;
		}
}

 

懒汉式:

public class Single{
	//私有构造方法
	private Single(){}
	//类的成员位置,定义本类类型的变量,但是不建立对象
	private static Single s = null;
	//对外提供公共的静态方法,返回对象
	public static Single getInstance(){
		if(s == null)
			//建立本类的对象
			s = new Single();
		return s;
	}
}

 

测试类:


 

package cn.itcast;
/*
 * 测试一下单例模式Single类
 */
public class SingleTest {
	public static void main(String[] args) {
		//获取、Single类的对象,使用静态方法,获取
		Single s = Single.getInstance();
		System.out.println(s);
		
		Single s1 = Single.getInstance();
		System.out.println(s1);
	}
}


打印结果如下:

cn.itcast.Single@72ebbf5c
<a target=_blank href="mailto:cn.itcast.Single@72ebbf5c">cn.itcast.Single@72ebbf5c</a>


 

 

由打印结果可见ss1的哈希值相同,

内存中只创建了一个实例对象,S S1两个引用指向一个实例对象

 


 


------- android培训java培训、期待与您交流! -----------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值