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() {
    
        }
    }
  • 相关阅读:
    “键鼠耕耘,IT家园”,博客园2010T恤正式发布
    解决jQuery冲突问题
    上周热点回顾(5.316.6)
    博客园电子期刊2010年5月刊发布啦
    上周热点回顾(6.76.13)
    Chrome/5.0.375.70 处理 <pre></pre> 的 Bug
    [转]C# MemoryStream和BinaryFormatter
    [转]Android adb不是内部或外部命令 问题解决
    [转]HttpWebRequest解析 作用 介绍
    财富中文网 2010年世界500强排行榜(企业名单)
  • 原文地址:https://www.cnblogs.com/yuyangcoder/p/10019944.html
Copyright © 2011-2022 走看看