每日复习

单例模式

单例模式(Singleton Pattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。


保证一个类仅有一个实例,并提供一个访问它的全局访问点。

properties配置文件

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost/3306/数据库名

user=数据库账号

pwd=数据库密码

port=端口号(默认3306)


饿汉模式(静态常量)[可用]

public class Singleton {

    private final static Singleton INSTANCE = new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){

        return INSTANCE;

    }

}

饿汉式(静态代码块)[可用]

public class Singleton {

    private static Singleton instance;

    static {

        instance = new Singleton();

    }

    private Singleton() {}

    public static Singleton getInstance() {

        return instance;

    }

}


懒汉式(线程不安全)[不可用]

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 singleton;

    private Singleton() {}

    public static Singleton getInstance() {

        if (singleton == null) {

            synchronized (Singleton.class) {

                singleton = new Singleton();

            }

        }

        return singleton;

    }

}


双重检查[推荐用]

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;

    }

}


静态内部类[推荐用]

public class Singleton {

    private Singleton() {}

    private static class SingletonInstance {

        private static final Singleton INSTANCE = new Singleton();

    }

    public static Singleton getInstance() {

        return SingletonInstance.INSTANCE;

    }

}


枚举[推荐用]

publicenum Singleton {

    INSTANCE;

    publicvoid whateverMethod() {

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 4,031评论 0 11
  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,632评论 1 8
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,272评论 1 0
  • 想了一天,还是决定把作品拿出来。 首先这是临摹小米与石石的画,刚开始学彩铅不太懂得如何选色,而且铺色了好几层,感觉...
    想念刺身阅读 331评论 1 2
  • 1、春节同学聚会时预约了男同学的儿子做心理咨询。男同学在医院做医生,他的儿子高一经常不去上学,跑回家里。为了减少孩...
    心怡曼陀罗心理工作室阅读 368评论 0 0

友情链接更多精彩内容