java——设计模式之单例模式

单例模式可分为:饿汉式和懒汉式
优先使用懒汉式,使用懒汉式不会造成资源浪费

饿汉式

package com.hadwinling.day03.style02;

/**

* 创建时间:2020年2月13日 上午9:46:56

* 项目名称:HadwingLing

* @author HadwinLing

* @version 1.0

* @since JDK 1.6.0_21

* 文件名称:SingletonDemo.java
* 单例模式-饿汉式【单线程】
* 1.构造方法私有
* 2.单例模式的私有属性初始化
* 3.静态方法来返回单例对象(public)
* 
* 

*/
public class SingletonDemo {
	//属性私有。保证类外部不能调用
	//静态属性实例化,创建一个对象,保证对象唯一
	
	private static SingletonDemo singletonDemo = new SingletonDemo();
	//构造方法私有,保证类外部不能创建对象。
	private SingletonDemo() {
		
	}
	//静态方法不能调用非静态属性,此时要将属性私有化
	//通过静态方法来返回单例对象
	//通过类名调用
	public static SingletonDemo getInstance() {
		return singletonDemo;
	}

}

饿汉式的使用

package com.hadwinling.day03.style02;

/**

* 创建时间:2020年2月13日 上午9:51:59

* 项目名称:HadwingLing

* @author HadwinLing

* @version 1.0

* @since JDK 1.6.0_21

* 文件名称:SingletonDemoTest.java

*/
public class SingletonDemoTest {
	public static void main(String[] args) {
		SingletonDemo s1 = SingletonDemo.getInstance();
		SingletonDemo s2 = SingletonDemo.getInstance();		
		System.out.println(s1);
		System.out.println(s2);
		/**
		 * com.hadwinling.day03.style02.SingletonDemo@15975490
		 * com.hadwinling.day03.style02.SingletonDemo@15975490
		 */
	}

}

懒汉式

package com.hadwinling.day03.style02;

/**

* 创建时间:2020年2月13日 上午10:03:52

* 项目名称:HadwingLing

* @author HadwinLing

* @version 1.0

* @since JDK 1.6.0_21

* 文件名称:SingletonDemo02.java
* 单例模式-懒汉式
* 1.构造方法私有
* 2.提供静态属性
* 3.静态方法,在第一次调用时创建唯一对象并返回
*/
public class SingletonDemo02 {
	private static SingletonDemo02 singletonDemo02 ;
	//构造方法私有,保证类外部不能创建对象。
	private SingletonDemo02() {
		
	}
	//当第一调用静态方法时,创建对象
	public static SingletonDemo02 getInstance() {
		if(singletonDemo02 == null) {
			singletonDemo02 = new SingletonDemo02();
		}
		return singletonDemo02;

	}

}

懒汉式的使用

package com.hadwinling.day03.style02;

/**

* 创建时间:2020年2月13日 上午10:07:35

* 项目名称:HadwingLing

* @author HadwinLing

* @version 1.0

* @since JDK 1.6.0_21

* 文件名称:SingletonDemo02Test.java

*/
public class SingletonDemo02Test {
	public static void main(String[] args) {
		SingletonDemo02 s21 =SingletonDemo02.getInstance(); 
		SingletonDemo02 s22 =SingletonDemo02.getInstance();
		System.out.println(s21);
		System.out.println(s22);
		
	}

}

发布了42 篇原创文章 · 获赞 12 · 访问量 6105

猜你喜欢

转载自blog.csdn.net/Alingyuzi/article/details/104327155