zoukankan      html  css  js  c++  java
  • 单例模式

    1、饿汉式 (静态常量)

    public class Singleton {

    private final static Singleton INSTANCE = new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){
    return INSTANCE;
    }
    }

    2、饿汉式(静态代码块)

    public class Singleton {

    private static Singleton instance;

    static {
    instance = new Singleton();
    }

    private Singleton() {}

    public static Singleton getInstance() {
    return instance;
    }
    }

    3、懒汉式(线程不安全)

    public class Singleton {

    private static Singleton singleton;

    private Singleton() {}

    public static Singleton getInstance() {
    if (singleton == null) {
    singleton = new Singleton();
    }
    return singleton;
    }
    }

    4、懒汉式(线程安全,同步方法)

    public class Singleton {

    private static Singleton singleton;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
    if (singleton == null) {
    singleton = new Singleton();
    }
    return singleton;
    }
    }

    5、懒汉式(线程安全,同步代码块)

    public class Singleton {

    private static Singleton singleton;

    private Singleton() {}

    public static Singleton getInstance() {
    if (singleton == null) {
    synchronized (Singleton.class) {
    singleton = new Singleton();
    }
    }
    return singleton;
    }
    }

    6、双重检查[推荐用]

    public class Singleton {

    private static volatile Singleton singleton;

    private Singleton() {}

    public static Singleton getInstance() {
    if (singleton == null) {
    synchronized (Singleton.class) {
    if (singleton == null) {
    singleton = new Singleton();
    }
    }
    }
    return singleton;
    }
    }

    7、静态内部类[推荐用]

    public class Singleton {

    private Singleton() {}

    private static class SingletonInstance {
    private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
    return SingletonInstance.INSTANCE;
    }
    }

    8、枚举[推荐用]

    public enum Singleton {
        INSTANCE;
        public void whateverMethod() {
    
        }
    }
  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/yuyangcoder/p/10019944.html
Copyright © 2011-2022 走看看