`
cyouryuu
  • 浏览: 12985 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

单例实现方法

 
阅读更多
1.  通过判断
    private Singleton(){}
    private static Singleton instance = null;
    public static Singleton getInstance(){
        if (instance == null){
            instance = new Singleton();
        }
        return instance;
    }
   
2.  使用静态成员变量
    private Singleton(){}
    private static Singleton instance = new Singleton();
    public static singleton getInstance(){
        return instance;
    }

3.  利用缓存
    private Singleton(){}
    private Map<String,Singleton> map = new HashMap<String,Singleton>;
    public Singleton getInstance(String key){
        singleton instance = map.get(key);
        if (instance == null ){
            instance = new Singleton();
            map.put(key,instance);
        }
        return instance;
    }
   
4.  为1添加线程安全:同步
     public static synchronized Singleton getInstance(){
           ....
    }
      
5.  双重检查加锁
    private Singleton(){}
    private volatile static Singleton instance = null;
    public static Singleton getInstance(){
        if (instance == null){
            synchronized(this){  //synchronized(Singleton.class)
                if (instance == null){
                    instance = new Singleton();
                }
            }
        }
    }

6. 通过静态内部类: 比较好的实现方式(既实现了延迟加载,也保证了线程安全)
    private static class SingletonHolder{
        private static Singleton instance = new Singleton();   
    }
    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }

7. 枚举: 最佳实现
    enum SingletonEnum {

       singleton;

       //构造器
        private SingletonEnum(){
            System.out.println("构造器只调用一次");
       }
       //属性
        private String attribute;
       //定义方法
        public void method(){}
   }
   
       
分享到:
评论

相关推荐

    JAVA单例模式的几种实现方法

    ### JAVA单例模式的几种实现方法 #### 一、饿汉式单例模式 饿汉式单例模式是在类初始化时就已经完成了实例化的操作。这种模式下,类一旦被加载,就会创建一个单例对象。 ##### 代码示例: ```java class ...

    两种单例实现方式

    两种单例实现方式 单例模式是指一个类只有一个实例,并且提供了一个全局的访问点来访问该实例。单例模式是一种常用的设计模式,它可以确保某个类只有一个实例,并且提供了一个全局的访问点来访问该实例。 在 Java ...

    ios 单例demo

    本示例将深入探讨iOS中的单例实现方法。 单例模式的核心在于限制类的实例化,确保在整个应用程序生命周期内只有一个对象存在。在Objective-C中,我们通常通过以下步骤创建一个单例: 1. **声明一个共享实例**:...

    使用单例模式实现计数器

    3. 提供一个公共的静态方法,作为获取单例实例的入口,这个方法通常称为`GetInstance()`。 以下是一个简单的C#单例模式实现计数器的例子: ```csharp public sealed class Counter { private static readonly ...

    java 单例设计模式

    除此之外,还有其他一些单例实现方法,如枚举(Enum)方式,它是Java官方推荐的实现单例的方式,既保证了线程安全,又实现了延迟加载。枚举单例在类加载时初始化,但无需担心非懒加载问题,因为枚举实例化仅在枚举...

    Qt多工程调用单例实现,带线程锁

    标题中的"Qt多工程调用单例实现"意味着我们在多个独立的Qt工程之间共享同一对象实例。这通常是通过将单例类作为库或模块提供,然后在各个工程中引入和使用。在给定的资源中,"DataSource"很可能就是这样的单例类,...

    单例模式各种实现方式

    每种实现方式都有其特点和适用场景,开发者应根据实际需求选择合适的单例实现。在实际项目中,还要考虑性能、线程安全以及代码可读性等因素。例如,如果项目中对性能要求较高,可以优先考虑静态内部类或枚举实现;...

    单例实现源码singleton-C++

    以下是对"单例实现源码singleton-C++"的详细解析。 1. **静态成员变量法** 这是最常见的单例实现方式。在类中定义一个静态成员变量,该变量保存唯一的实例。例如: ```cpp class Singleton { public: static ...

    Java中的五种实现方法【单例模式】

    这是最简单的单例实现方式,它在类加载时就完成了初始化,所以是线程安全的。饿汉式的优点是实现简单且线程安全,但缺点是如果单例对象长时间未被使用,会占用内存资源。 ```java public class Singleton { ...

    数据库单例实现

    这是Java特有的单例实现方式,线程安全,且防止反序列化重新创建实例。 ```java public enum DatabaseSingleton { INSTANCE; public void connectDB() { // 连接数据库的逻辑 } } ``` 以上就是数据库单例模式...

    singleton单例模式

    **单例模式**是软件设计模式中的一种,它确保一个类只有一个实例,并提供一个全局访问点。在C++中实现单例模式,...在实际编程中,需要根据项目需求和环境选择合适的单例实现方法,同时注意线程安全和内存管理等问题。

    单例模式的几种实现方式

    每种实现方式都有其适用场景,开发者应根据实际需求选择合适的单例实现。例如,如果项目对性能要求较高,可考虑使用静态内部类或枚举;如果对内存占用有要求,可以考虑饿汉式。在多线程环境中,务必保证单例的线程...

    Qt Quick application单例实现

    以下是一个基本的Qt Quick应用单例实现步骤: 1. **定义单例类**: 创建一个继承自`QObject`的C++类,例如`MySingleton`。 ```cpp #include class MySingleton : public QObject { Q_OBJECT public: explicit ...

    单例模式Java实现

    1. **饿汉式(静态常量)**:这是最简单的单例实现方式,它在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快,且线程安全。 ```java public class Singleton { private static final Singleton ...

    iOS代替单例的方法

    例如,如果一个类需要与多个组件通信,可以设定一个代理协议,让感兴趣的类实现这个协议,而不是通过单例进行通信。 2. **依赖注入(Dependency Injection)** 依赖注入允许在运行时将依赖项传递给对象,而不是让...

    Java实现多种单例模式

    以下是Java实现的六种单例模式的详细解释: 1. 懒汉式(Lazy Initialization): 这种方式延迟了单例对象的初始化,直到第一次被请求时。例如,`SingleInstance1.java`可能就实现了这种方式。代码通常包含一个私有...

    单例模式(Singleton)的6种实现

    饿汉式是一种简单的单例实现方式。在类加载时,单例对象就已经创建。这种实现方式的优点是实现简单,但缺点是不管是否使用,单例对象都会被创建。 2. 懒汉式(Lazy Initialization) 懒汉式单例模式延迟了单例实例...

    43丨单例模式(下):如何设计实现一个集群环境下的分布式单例模式?1

    单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供全局访问点。在单例模式中,类的构造函数是私有的,防止外部直接创建对象,而是通过静态...在实际应用中,应根据系统的需求和环境选择合适的单例实现方式。

    单例模式各种实现及分享

    java单例模式的多种实现方法及优劣区分,以及如何摧毁单例模式。能够让大家认识到单例的多种多样

Global site tag (gtag.js) - Google Analytics