使用enum实现单例

单例模式作为面试必考题,是每个应聘者都应掌握的知识,其中最有Big的就数enum的单例了,这也是Effective java作者推荐的一种方式

下面的代码实现了datasource的单例

enum dataSource{
        DATA_SOURCE;
        private Connection connection = null;
        private dataSource() {
            try {
                connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306", "root", "123456");
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        public Connection getConnection(){
            return connection;
        }
    }

原文地址:https://www.cnblogs.com/BBchao/p/8552127.html

时间: 2024-08-07 09:40:52

使用enum实现单例的相关文章

通过枚举enum实现单例

通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 enum Singleton implements Serializable { INSTANCE; private String name; public String getName() { return name; } public void setName(String name) { this.nam

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现

直接上代码: 1 public enum Boss { 2 3 INSTANCE; 4 5 private String name; 6 7 public void doSomeThing() { 8 System.out.println(name + " is doing something now..."); 9 } 10 11 public String getName() { 12 return name; 13 } 14 15 public void setName(Stri

java单例之enum实现方式

传统的两私有一公开(私有构造方法.私有静态实例(懒实例化/直接实例化).公开的静态获取方法)涉及线程安全问题(即使有多重检查锁也可以通过反射破坏单例), 目前最为安全的实现单例的方法是通过内部静态enum的方法来实现,因为JVM会保证enum不能被反射并且构造器方法只执行一次. 实现方法如下: /** * 使用枚举的单例模式 * * @author yzl * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */ public class EnumSingle

iOS--Swift开发中的单例设计模式

最近在开发一个小的应用,遇到了一些Objective-c上面常用的单例模式,但是swift上面还是有一定区别的,反复倒来倒去发现不能按常理(正常的oc to swift的方式)出牌,因此搜索了一些帖子.可能是xcode或者sdk的问题吧(我相信他们不会把未经测试的代码展示,吧?...),一些帖子中的代码犯了明显的错误,编译失败.于是有了这篇文章,分享给大家. 原作者实现了一种单例,但是红色代码导致非线程安全: 1 class var sharedInstance:TPScopeManager {

单例写法 转

如何正确地写出单例模式 1.懒汉式,线程不安全 这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题.当有多个线程并行调用 getInstance() 的时候,就会创建多个实例.也就是说在多线程下不能正常工作 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == nu

设计模式:单例

传统的实现方法:两私一公,涉及线程安全问题(即使有多重检查锁也可以通过反射破坏单例) public class Singleton { private volatile static Singleton instance = null; private Singleton () { } public static Singleton getSingleton() { if(instance == null) { synchronized(Singleton.class) { if(instanc

Java 单例

最近在网上看到一篇关于 Java 单例的创建问题,虽然是一个 Java 程序员,但是到现在还没有真正的深入了解到 Java 的原理和机制.所以每每看到这样能够"真正"接触 Java 的机会内心总是充满了欣喜.记录下,以后备用. 懒汉模式 public class Singlton{ private static Singleton instance; private Singlton(){} public static Singlton getInstance(){ if(instac

单例 (JAVA)

java中单例模式是一种常见的设计模式,以下是它的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一实例. 单例类必须给所有其他对象提供这一实例 第一种(懒汉,线程不安全): 1 public class Singleton {   2     private static Singleton instance;   3 private Singleton (){}    4     public static Singleton getInstance() {   5     if