Java中的单例模式

通过百度百科我们了解到,单例模式的定义如下:

“保证一个类仅有一个实例,并提供一个访问它的全局访问点。

这是定义,那么我的理解就是,解决一个类在内存只存在一个对象。其他的类在访问的他的时候,只用这一个对象,也就是我们规定了这个对象,用户只可以在这一块内存空间上使用。

为了创建单例模式,就要保证对象的唯一。

  1. 为了避免其他类过多的建立该类的对象,先禁止程序建立该类对象
  2. 为了让其他程序访问该类对象,只好在本类中建立一个自定义对象。
  3. 为了方便其他类对自定义对象的访问,可以对外提供一些访问方式。
根据以上总结,创建单例模式的一般步骤就是

  1. 将构造函数私有化
  2. 在类中创建一个本类对象
  3. 提供一个方法可以获得该对象
写一个例子说明
public class SingleDemo {

	/**LGL
	 * @param args
	 */
	
	public static class Single {

		private Single() {}//1、将构造函数私有化
		
		
		private int x;
		
		public int getX() {
			return x;
		}

		public void setX(int x) {
			this.x = x;
		}

		private static Single s = new Single();//2、在类中创建一个本类对象
		
		public static Single getInstance(){//3、提供一个方法可以获得该对象
			return s;
		}

	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Single s1=Single.getInstance();
		Single s2=Single.getInstance();
		s1.setX(15);//设置s1对象的x
		System.out.println(s2.getX());//这里打印s2对象的x的值,因为s1里的x值肯定是15,我们打印s2里的x,如果也是15,则证明s1和s2是一个对象,引用同一块内存
		System.out.println(s2==s1);//如果为true则证明s1、s2是同一块内存,同一个对象
	}

}

//打印结果
15
true

以上 方式的单例模式称为 饿汗式
下面 介绍的方法叫 懒汉式

public class SingleDemo2 {

	/**LGL 懒汉式 单例模式的写法
	 * @param args
	 */
	
	public static class Single {

		private static Single s=null;
		private Single() {}//1、将构造函数私有化
		public static Single getInstance(){//3、提供一个方法可以获得该对象
			if (s==null) {//利用双判断+同步锁 的方式 保证对象的唯一性
				synchronized (Single.class) {
					if (s==null) {
						s=new Single();
					}
				}
			}
			return s;
		}

	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Single s1=Single.getInstance();
		Single s2=Single.getInstance();
		System.out.println(s2==s1);//如果为true则证明s1、s2是同一块内存,同一个对象
	}

}

// 打印结果
true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值