10.7 单例模式

单例模式----饿汉模式

class Singleton {								// 单例程序类
	// 在类内部进行Single类对象实例化,为了防止可能出现重复实例化所以使用final标记
	private static final Singleton INSTANCE = new Singleton();
	private Singleton() {}						// 构造方法私有化,外部无法通过关键字new实例化 
	/**
	 * 获取本类实例化对象方法,static方法可以不受实例化对象的限制进行调用
	 * @return INSTANCE内部实例化对象,不管调用多少次此方法都只返回同一个实例化对象
	 */
	public static Singleton getInstance() {
		return INSTANCE;
	}
	public void print() {							// 信息输出
		System.out.println("www.mldn.cn");
	}
}

public class JavaDemo {
	public static void main(String args[]) {
		// 在外部不管有多少个Singleton类对象,实质上最终都只调用唯一的一个Singleton类实例
		Singleton instance = null; 				// 声明对象
		instance = Singleton.getInstance();		// 获取实例化对象
		instance.print();						// 通过实例化对象调用方法
	}
}

单例模式----懒汉模式(也称为饱汉模式)

class Singleton {								// 单例程序类
	// 定义公共的instance属性,由于需要在第一次使用时实例化,所以无法通过关键字final定义
	private static Singleton instance;			// 声明本类对象
	private Singleton() {}						// 构造方法私有化,外部无法通过关键字new实例化 
	/**
	 * 获取本类实例化对象方法,static方法可以不受实例化对象的限制进行调用
	 * @return 返回唯一的一个Singleton类的实例化对象
	 */
	public static Singleton getInstance() {
		if (instance == null) {					// 第一次使用时对象未实例化
			instance = new Singleton() ; 			// 实例化对象
		}
		return instance ;						// 返回实例化对象
	}
	public void print() {							// 信息输出
		System.out.println("www.mldn.cn");
	}
}
public class JavaDemo {
	public static void main(String args[]) {
		// 在外部不管有多少个Singleton类对象,实质上最终都只调用唯一的一个Singleton类实例
		Singleton instance = null; 				// 声明对象
		instance = Singleton.getInstance();		// 获取实例化对象
		instance.print();						// 通过实例化对象调用方法
	}
}

posted @ 2023-07-01 11:52  盘思动  阅读(14)  评论(0)    收藏  举报