`
北极的。鱼
  • 浏览: 158922 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】单例设计模式

 
阅读更多

转自: http://baike.baidu.com/link?url=UcxeuDIltmc8Rh6s1s4I8gvjWbKa8EAVDmMlZhDwIwEZNhSVCuHB_osv7SqqLWpX1vWdsEvKoLZbHVCRjeuWzq

 

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。

目的

对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。

 

代码图片转自MSDN: 



 

主要优点:

1、提供了对唯一实例的受控访问。

2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。

3、允许可变数目的实例。

 

主要缺点:

1、由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。

2、单例类的职责过重,在一定程度上违背了“单一职责原则”。

3、滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

  • 大小: 38.5 KB
分享到:
评论

相关推荐

    设计模式之单例模式Java实现和类设计图

    本次我们将深入探讨两种设计模式——单例模式和装饰模式,它们在Java编程中都有着广泛的应用。 首先,让我们来理解“单例模式”。单例模式是一种创建型设计模式,其核心思想是保证一个类只有一个实例,并提供一个...

    javaweb项目+设计模式(单例模式,工厂模式,动态代理,适配器)

    本项目涵盖了四种常见的设计模式:单例模式、工厂模式、动态代理和适配器模式。下面将详细阐述这四种设计模式的概念、作用以及在实际项目中的应用。 **1. 单例模式** 单例模式是一种限制类实例化次数为一个的设计...

    Javase 面试题.docx

    Java SE面试题主要涵盖了许多核心概念,其中包括变量的自增操作和单例设计模式。首先,我们来看自增变量的问题。 在Java中,自增操作(++)是一种常见的操作符,用于增加变量的值。在给定的代码段中,我们看到`i++`...

    c++单例模式线程日志类

    在C++编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在这个特定的场景中,我们讨论的是一个实现了单例模式的日志类,该类专为多线程环境设计,具备日志等级控制、...

    C#创建窗体的单例模式

    总之,C#中的WinForm窗体单例模式是一种有效的设计模式,它可以帮助我们更好地管理窗体实例,避免资源浪费,同时提高用户体验。在实际项目中,结合适当的场景和需求,灵活运用单例模式可以优化代码结构,提升软件...

    ava常用设计模式-单例模式

    ava常用设计模式-单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,有以下特点: 1. 单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给所有其他对象提供这一...

    设计模式PPT合集

    设计模式是软件工程中的一种最佳实践,它是在特定情境下为了解决常见问题而形成的一套可重用的解决方案模板。这些模式总结了在长期软件开发过程中,人们发现的高效、可靠的代码设计策略。本合集包含的设计模式PPT...

    浅议单例模式之线程安全(转)

    单例模式是软件设计模式中的一种经典模式,它限制了类的实例化,确保一个类在整个应用程序中只有一个实例。在多线程环境下,线程安全的单例模式尤为重要,因为如果不正确实现,可能会导致多个线程同时创建多个实例,...

    第五讲单例模式

    单例模式是设计模式中的重要概念,它在软件开发中被广泛应用,特别是在需要全局唯一实例的场景下。在本讲“第五讲单例模式”中,我们将深入探讨这个模式的原理、实现方式以及其在实际编程中的应用。 单例模式的核心...

    乐在其中设计模式(C#)-单例模式(SingletonPattern)[收集].pdf

    《乐在其中设计模式(C#) - 单例模式(Singleton Pattern)》 单例模式是一种常用的设计模式,其核心思想在于确保一个类在整个应用程序的生命周期中只存在一个实例,并提供一个全局访问点来获取这个唯一的实例。在C#中...

    新技术培训 培训讲义9_设计模式之单例适配器和工厂模式.doc

    在这个文档中,我们关注的是三种设计模式:单例模式、适配器模式和工厂模式。 首先,单例模式是一种确保一个类只有一个实例并提供一个全局访问点的设计模式。这种模式的核心在于控制类的实例化过程,确保在任何情况...

    设计模式:创建型之原型(深浅拷贝)、单例(饿汉式与懒汉式),三大工厂模式 结构型之适配器模式,代理模式(三大代理)

    设计模式是一种用于解决常见软件设计问题的模板,它们是经验丰富的软件工程师在长时间开发中总结出来的最佳实践。设计模式可以分为创建型、结构型和行为型三类,每类都包含多种特定的设计模式,旨在解决特定类型的...

    设计模式之里氏转换原则

    设计模式是软件工程中解决常见问题的经验总结,通过模式的应用,可以使代码结构更加清晰,易于维护和扩展。里氏转换原则是设计模式中一个重要的理论基础,它对实现这些模式起到关键的指导作用。 1. **什么是里氏...

    Android设计模式系列之单例模式

    单例模式是软件设计模式的一种,其主要目的是确保一个类只有一个实例,并且提供一个全局访问点来获取这个实例。在Android系统中,单例模式被广泛应用于管理那些需要全局共享的资源,例如输入法管理者...

    java 23种设计模式.7z

    1. **单例设计模式**:确保一个类只有一个实例,并提供全局访问点。常用于控制共享资源,如数据库连接池。实现方式有饿汉式(静态常量)、懒汉式(线程不安全、线程安全)和双重检查锁定等。 2. **工厂设计模式**:...

    Example-TypeScript-Singleton-Pattern:TypeScript 和单例模式

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在 TypeScript 中,我们可以利用静态属性和私有构造函数来实现单例模式,从而确保类的唯一性。以下是对这个"Example-TypeScript-...

    winform序列化 md5加密 单例模式(无视频).rar

    4. **单例模式**: 单例模式是一种设计模式,确保一个类只有一个实例,并提供全局访问点。在C#中,通常通过私有构造函数和静态方法来实现单例,以防止其他代码实例化对象。典型的单例实现可能包含`private static`...

    c++设计模式全系列+应用场景+实例说明

    2. **单例模式(Singleton Pattern)**:单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。 3. **观察者模式(Observer Pattern)**:观察者模式是一种行为设计模式,定义了对象间的...

Global site tag (gtag.js) - Google Analytics