设计模式之美---单例模式singleton

欢迎来到36du的主页
源码地址码云地址

单例模式实现的方式有:懒汉式、饿汉式、双重校验锁、静态内部类、枚举法以及各自的变种方式

推荐使用的实现方式:双重校验锁(基于懒汉式)、静态内部类、枚举法

单例的使用场景:
1)需要频繁的进行创建和销毁的对象
2)创建对象消耗时过多或耗资源过多,但又经常用到的对象
3)工具类对象
4)数据库的连接池也采用单例模式,因为要频繁的访问数据库对象
5)一些共享的配置文件,比如spring的配置文件的读取
6)多线程的线程池的设计也是采用单例模式,由于线程池要方便对池中的线程进行控制
7)网站计数器,一般也是采用单例模式,否则难以实现同步

1.一般写法:懒汉式

package com.creational.singleton;
public class SingletonOne {
 private static SingletonOne singletonOne;
 private SingletonOne() {}
 public static SingletonOne getInstance1() {
  if(null==singletonOne) {
   singletonOne = new SingletonOne();
  }
  return singletonOne;
}

2.一般写法:饿汉式

package com.creational.singleton;
public class SingletonTwo {
 private static SingletonTwo instance = new SingletonTwo();
 public static SingletonTwo getInstance1() {
  return instance;
}

你可能感兴趣的:(设计模式之美---单例模式singleton)