`

Java与模式之单例(Singleton)模式

阅读更多

    单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

饿汉式单例类

 

public class EagerSingleton
{
    private static final EagerSingleton m_instance = 
        new EagerSingleton();
    /**
    * 私有的默认构造子
    */
    private EagerSingleton(){} 
    /**
    * 静态工厂方法
    */
    public static EagerSingleton getInstance()
    { 
        return m_instance;

    }
}

 

    当类被加载时,静态变量m_instance会被初始化,此时类的私有构造子会被调用。

懒汉式单例类

public class LazySingleton{
    private static LazySingleton m_instance;
   /**
    * 私有的默认构造子,保证外界无法直接实例化
    */
   private LazySingleton(){}
   /**
    * 静态工厂方法,返回此类的唯一实例
    */
   synchronized public static LazySingleton 
        getInstance(){
        if(m_instance == null){
             m_instance = new LazySingleton();
       }
        return m_instance;
    }
}

    与饿汉式单例类不同的是,懒汉式单例在第一次被调用时才初始化自己。在懒汉式实现里对静态工厂方法使用了同步化(synchronized 关键字)以处理多线程环境。

    单从资源利用率角度来看,懒汉式稍微好一些;从速度和反映时间角度来看,饿汉式要好一些。

    饿汗式单例类可以在java语言内实现,但不易在c++内实现,因为静态初始化在c++里没有固定的顺序,即静态变量m_instance变量的初始化与类的加载顺序没有保证,可能会出问题。这就是为什么在GoF提出单例的概念时,举的例子是懒汉式。实际上本书认为饿汗式单例类更符合java语言本身的特点

 

 

 

参考:《Java与模式》

 

分享到:
评论

相关推荐

    java Singleton单例模式

    java Singleton单例模式 java Singleton单例模式

    Java 单例模式Singleton

    简单的单例模式举例Singleton 分为恶汉式 懒汉式

    java模式之单例模式

    java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 特点: 1,一个类只能有一个实例 2,自己创建这个实例 3,整个系统都要使用这个实例 例: 在下面的对象图...

    Singleton(单例模式)

    在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这可以节省一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率...

    单例模式Singleton(java源码)

    Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例化它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance()...

    java 设计模式 单例模式

    //单例模式,始终只产生一个对象 /*public class SingleTest { public static void main(String[] args) { SingleTon singleTon1=SingleTon.getInstance(); SingleTon singleTon2=SingleTon.getInstance(); ...

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式(Protype) 5 6.适配器模式(Adapter) 6 7.装饰模式(Decorator) 6 8.代理模式(Proxy) 7 9.外观模式(Facade) 7 10.桥接模式(Bridge) 7 ...

    单例 singleton txt

    singleton 单例 java 详细介绍了单例模式的使用,很不错的单例模式的介绍

    单例模式 Singleton Pattern

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...

    Java设计模式之单例模式及其应用

     Java中单例模式的定义是:一个类只有一个实例,而且自行实例化并且向整个系统提供这个实例。  优点:由于单例模式在内存中只有一个实例,减少了内存开支和系统的性能开销;单例模式可以避免对资源的多重占用。 ...

    singleton_单例模式_java_设计模式_

    java设计模式,单例模式的不同实现方式

    Java常用的3中设计模式代码即工厂模式、单例模式、观察者模式demo

    java 三种设计模式Demo 其中对单例模式做了详细的讲解,及性能和线程安全方面的优化其中Singleton.java为经典单例模式。

    Java面向对象(高级)- 单例(Singleton)设计模式

    Java面向对象(高级)-- 单例(Singleton)设计模式

    Java设计模式单例模式(Singleton)用法解析

    主要介绍了Java设计模式单例模式(Singleton)用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    JAVA中的单例模式诠释

    单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在

    Java设计模式之单态模式(Singleton模式)介绍

    主要介绍了Java设计模式之单态模式(Singleton模式)介绍,本文讲解了如何使用单例模式、使用单例模式注意事项等内容,需要的朋友可以参考下

    Java聊天室 观察者模式和单例模式

    基于观察者模式和单例模式的java聊天室 面向对象设计,抽象,封装,代理,组合和继承 适合理解java面向对象,socket编程,观察者模式和单例模式

    java单例模式

    java设计模式 单例模式singleton详解,全网最全面的单例讲解,各种细节都到位

    单例模式Java实现

    单例模式是最简单的一种设计模式,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例, 本资源提供了用java语言实现简单的单例模式,供初学者参考

    singleton单例模式

    c++ singleton单例模式

Global site tag (gtag.js) - Google Analytics