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() {
    
        }
    }
  • 相关阅读:
    HDU 5319 Painter
    HDU 5328 Problem Killer
    HDU 5327 Olympiad
    HDU 5339 Untitled
    HDU 5335 Walk Out
    HDU 5317 RGCDQ
    HDU 5326 Work
    CF GYM 100703A Tea-drinking
    CF GYM 100703B Energy Saving
    CF GYM 100703F Game of words
  • 原文地址:https://www.cnblogs.com/yuyangcoder/p/10019944.html
Copyright © 2011-2022 走看看