以最简单的方式了解设计模式中的单例模式

以最简单的方式了解设计模式中的单例模式

单例模式:
即一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般只能通过get方法获取到他们的实例。

分类:懒汉式、饿汉式
①懒汉式:线程不安全

public class Singleton{
	// 私有化构造静态参数
	private static Singleton singleton;
	// 私有化无参构造
	private singleton(){}// 公共的静态方法
	public static Singleton getInstance(){
		if(singleton == null){
			singleton == new singleton();
		}
			return singleton;
	}
}

②懒汉式:线程安全

public class Singleton{
	// 私有化构造静态参数
	private static Singleton singleton;
	// 私有化无参构造
	private singleton(){}// 公共的静态方法
	public static synchronized Singleton getInstance(){
		if(singleton == null){
			singleton == new singleton();
		}
		return singleton;
	}
}

③饿汉式

public class Singleton{
	// 私有化构造静态参数,只要加载就创建对象
	private static Singleton instance = new Singleton()// 私有化无参构造
	private singleton(){}// 公共的静态方法
	public static synchronized Singleton getInstance(){
		return singleton;
	}
}

④静态内部类
⑤枚举:枚举可以解决多线程同步问题,还能防止反序列化重新创建对象,jdk 1.5以后才又枚举。

public enum Singleton{
	INSTANCE;
	public void whateverMethod(){
	}
}

⑥双重校验锁

应用场景:

  1. 在spring中创建bean实例默认都是单例模式
  2. Windows的任务管理器
  3. Windows的回收站
  4. 网站的计数器
  5. 应用程序的日志
原创文章 6 获赞 8 访问量 951

猜你喜欢

转载自blog.csdn.net/weixin_42437102/article/details/105955340