zl程序教程

您现在的位置是:首页 >  Java

当前栏目

【Java】Java单例模式

2023-02-19 12:20:36 时间

单例模式是什么鬼?

顾名思义,只有一个实例。

首先写一个类,将类的构造函数写为私有的,并写一个静态的变量(最好是私有的)并指向null

private static SingleDemo me = null;

写一个公开的静态方法(能直接在外部类被Self所调用),用于创建实例

public static SingleDemo creatDemo()
public static SingleDemo creatDemo(){
   if(me == null) me = new SingleDemo();
   return me;
}

大体代码

public class SingleDemo {
	private static SingleDemo me = null;
	public int count=0;
	private SingleDemo() {
		count++;
	}
	//思考:单例模式为何需要返回
	public static SingleDemo creatDemo() {
		if(me == null) me=new SingleDemo();//单例模式重点,保证所有对象创建的是同一个实例
		return me;
	}

}
public class SingleTest {
	public static void main(String[] args) {
//		SingleDemo s1 = new SingleDemo();
		SingleDemo s1 = SingleDemo.creatDemo();

		SingleDemo s2 = SingleDemo.creatDemo();
		System.out.println(s1.count);
		s1.count++;
		System.out.println(s2.count);
		System.out.println(s1==s2);//true
	}
}

思考:

  1. 单例模式创建多个对象时指向几个实例? 一个
  2. 如果是单列模式,两个对象使用==判断是否为真?是
  3. 单列模式如何实现?在上述例子中以静态变量me作为flag,如果me为null,则new一个对象,然后返回,否则直接返回,即返回首次new的“地址”(哈希码)