`

设计模式01_单例模式

 
阅读更多

单例模式是设计模式中比较简单的一种模式,也是使用的比较多的一种模式。

特别是在某些对象只需要一个时,比如线程池、缓存、日志对象、注册表对象等。

如果创建了多个,可能会导致很多问题。比如程序行为异常、资源使用过量等。

单例模式确保程序中一个类最多只有一个实例。

单例模式提供访问这个实例的全局点。

Java中单例模式需要:私有构造器、一个静态方法、一个静态变量。

如果使用多个类加载器,可能会导致单例失效而产生多个实例。

单例模式确保一个类只有一个实例,并提供一个全局的访问点。

下面为延迟加载的单例模式:

  1. publicclassSingleton{
  2. privatestaticSingletonuniqueInstance;
  3. privateSingleton(){}
  4. publicstaticSingletongetInstance(){
  5. if(uniqueInstance==null){
  6. uniqueInstance=newSingleton();
  7. }
  8. returnuniqueInstance;
  9. }
  10. }


处理多线程:需要将getInstance()变成同步(Synchronized),多线程的问题机会就可以轻松解决。

  1. publicclassSingleton{
  2. privatestaticSingletonuniqueInstance;
  3. privateSingleton(){}
  4. publicstaticsynchronizedSingletongetInstance(){
  5. if(uniqueInstance==null){
  6. uniqueInstance=newSingleton();
  7. }
  8. returnuniqueInstance;
  9. }
  10. }

如果应用程序总是创建并使用单例模式、或者在创建和运行时负担不太繁重,可能急切创建实例:

  1. publicclassSingleton{
  2. privatestaticSingletonuniqueInstance=newSingleton();
  3. privateSingleton(){}
  4. publicstaticsynchronizedSingletongetInstance(){
  5. returnuniqueInstance;
  6. }
  7. }

使用“双重检查加锁”,在getInstance()中减少使用同步:

  1. /**
  2. *volatile关键字确保当uniqueInstance变量被初始化
  3. *成Singleton实例时,多个线程正确地处理uniqueInstance变量
  4. *
  5. */
  6. ublicclassSingleton{
  7. privatevolatilestaticSingletonuniqueInstance=newSingleton();
  8. privateSingleton(){}
  9. publicstaticSingletongetInstance(){
  10. /**检查实例,不存在则进入同步区**/
  11. if(uniqueInstance==null){
  12. /**只有第一次才彻底执行下面代码**/
  13. synchronized(Singleton.class){
  14. /**进入区块中,再检查一次,如果仍为null,才创建实例**/
  15. if(uniqueInstance==null){
  16. uniqueInstance=newSingleton();
  17. }
  18. }
  19. }
  20. returnuniqueInstance;

  1. }
  2. 欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41016723

分享到:
评论

相关推荐

    Python 115.设计模式_单例模式实现.mp4

    Python 115.设计模式_单例模式实现.mp4

    单例模式窗口_单例窗口_窗口单例_C#_pdf查看_c#单例窗口_

    在编程领域,单例模式是一种常用的软件设计模式,它的核心思想是确保一个类只有一个实例,并提供全局访问点。在C#中,特别是在Windows Forms(Winform)应用开发中,单例模式常被用来控制窗口对象的创建,以避免因为...

    设计模式_创建型_单例模式.md

    单例模式是软件设计模式中的一种,属于创建型模式。单例模式的目的是确保一个类在任何时候都只有一个实例,并且提供一个全局访问点给外部程序使用。 ## 单例模式的定义 单例模式是一种常用的软件设计模式,通过单例...

    设计模式_单例模式.zip

    总结来说,单例模式是一种常见的设计模式,用于控制类的实例化过程,保证在整个系统中只有一个实例存在。在Java中,我们可以使用多种方式来实现单例,包括传统的同步方法、双重检查锁定和枚举。然而,使用单例模式时...

    singleton_单例模式_java_设计模式_

    单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制资源的共享,减少系统开销,以及在多线程环境中避免...

    IOS官方标准_单例模式

    单例模式是软件设计模式中的一种,它在iOS开发中被广泛应用,特别是在管理全局资源、配置或者需要跨类共享的对象时。单例模式的核心思想是确保一个类只有一个实例,并提供一个全局访问点,使得所有对象都可以通过这...

    M2_Singleton_单例模式_java_powder53m_arrow51c_

    单例模式是软件设计模式中的一种经典模式,用于控制类的实例化过程,确保一个类在整个应用程序中只有一个实例存在。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者缓存服务等。本资料主要介绍了...

    【IT十八掌徐培成】Java基础第19天_05_单例模式.zip

    单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个教程“【IT十八掌徐培成】Java基础第19天_05_单例模式”很可能深入讲解了如何在Java中实现单例,以及单例模式在实际应用中的重要性和原理。...

    c#代码介绍23种设计模式-01单例模式(附代码)

    c#代码介绍设计模式设计模式_单例模式 1)为什么会有单例模式 从单例模式的定义中我们可以看出——单例模式的使用自然是当我们的系统中某个对象只需要一个实例的情况,例如:操作系统中只能有一个任务管理器 2)...

    设计模式单例模式和工厂模式综合应用

    "设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...

    第6讲_单例模式(Singleton)

    单例模式(Singleton Pattern)是一种常用的软件设计模式,它的核心意图是确保一个类在整个系统中只有一个实例,并提供一个全局访问点。这样的设计可以避免资源浪费,尤其在处理那些需要共享状态且频繁使用的对象时...

    第9章_单例模式

    设计模式比较全面的教材,希望对你们有帮助

    adsf.rar_单例

    单例模式是软件设计模式中的一种,用于控制类的实例化过程,确保一个类在整个程序运行过程中只有一个实例存在。在C#中,单例模式的应用非常广泛,特别是在需要全局访问点或者资源管理的情况下,比如数据库连接、...

    设计模式 中的 单例模式和观察者模式

    在给定的标题和描述中,我们关注的是两种重要的设计模式:单例模式和观察者模式。 首先,让我们深入了解单例模式。单例模式是一种确保一个类只有一个实例,并提供全局访问点的设计模式。这种模式在资源管理、缓存、...

    C++单例设计模式,单例模式

    C++单例设计模式,单例模式 C++单例设计模式,单例模式

    设计模式——单例模式

    **设计模式——单例模式** 在软件工程中,设计模式是一种在特定场景下解决常见问题的标准方案,可以被复用并提升代码质量。单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分

    本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    在软件开发中,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于Java和其他面向对象编程语言中。以下是对标题和描述中提到的一些关键设计模式的详细解释: 1. **MVC模式(Model-View-Controller)**:这...

    C++设计模式-单例模式

    李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。

    设计模式之单例模式(结合工厂模式)

    单例模式是软件设计模式中的一种经典模式,它保证了类只有一个实例存在,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,...

Global site tag (gtag.js) - Google Analytics