`

创建型设计模式--单例模式

阅读更多

单例模式(Singleton)


    在一个系统要求一个类只有—个实例时才应当使用单例模式


    单例类(singleton)可以保证系统中只可能由该类的一个对象,而且这个对象由类自行初始化

 

 

   懒汉式单例类

 

    (1) 这个类被加载时,静态变量singleton会被初始化,此时类的私有构造器会被调用,单例类的惟一实例就被创建出来了。


    (2) Java语言中单例类的—个最重要的特点是类的构造于是私有的,从而避免外界利用构造子直接创建出任意多的实例。由于构造于是私有的,因此此类不能被继承。

public class LazySingleton {
	private static LazySingleton singleton = null;

	private LazySingleton() {
	}

	// 静态工场方法使用了同步化,以处理多线程环境。
	synchronized public static LazySingleton getInstance() {
		if (singleton == null) {
			singleton = new LazySingleton();
		}
		return singleton;
	}
}

 

    饿汉式单例类

 

    (1) 单从资源利用效率角度来讲,这个比懒汉式单例类稍差些从速度和反应时间角度来讲,则比懒汉式单例类稍好。


    (2) 然而,懒汉式单例类在实例化时,必须处理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器在实例化时必然涉及资源初始化.而资源初始化很有可能耗费时间。这意味着出现多线程同时首次引用此类的几率变得较大。

class EagerSingleton {
	private static final EagerSingleton singleton = new EagerSingleton();

	private EagerSingleton() {
	}

	public static EagerSingleton getInstance() {
		return singleton;
	}
}
  • 大小: 4.5 KB
分享到:
评论

相关推荐

    JAVA-设计模式-创建型模式-单例模式

    JAVA-设计模式-创建型模式-单例模式

    Java设计模式-单例模式详解

    Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...

    设计模式-单例模式

    单例模式是一种广泛应用于软件设计中的创建型设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制共享资源的访问,比如线程安全的数据库连接池或者配置管理等。 在Java中...

    一例读懂设计模式-单例模式、简单工厂模式.zip

    简单工厂模式是一种创建型设计模式,它提供一个工厂类来负责创建对象,而不是让客户端代码直接创建。这样,客户端可以避免知道具体类的细节,只需调用工厂方法即可获取所需对象。 - 工厂类:包含一个或多个用于...

    设计模式-单例设计模式

    单例模式是一种常见的创建型设计模式,其核心思想在于确保一个类仅有一个实例存在,并且该实例由该类自行创建,随后向整个系统提供这一唯一实例。 #### 类图解析 在设计模式中,类图是一种直观展示类结构及关系的...

    小D深入浅出设计模式+框架源码剖析实战

    ├─第三章 创建型设计模式-单例设计模式和应用 │ 3.1江湖传言里的设计模式-单例设计模式.mp4 │ 3.2代码实战-单例设计模式中的懒汉实现方式.mp4 │ 3.4单例模式中的饿汉实现和选择问题.mp4 │ 3.5JDK源码里面...

    PHP5设计模式-单例模式

    单例模式是一种常用的设计模式,它在软件工程中扮演着控制类实例化过程的角色,确保一个类只有一个实例,并提供全局访问点。这种模式在PHP中尤其常见,特别是在需要频繁实例化然后销毁的对象,或者需要控制共享资源...

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

    **单例模式**是软件设计模式中的一种,属于创建型模式。在C++中,单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于管理共享资源,如数据库连接、日志系统或者配置文件等。单例模式的主要...

    java设计模式-单例.pdf

    单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景中都是非常有用的,比如日志对象、配置管理器、线程池等。 ...

    C++设计模式--基于Qt4开源跨平台开发框架

    创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

    单例模式---初学 优点--缺点

    单例模式是软件设计模式中的一种经典模式,主要用于限制类的实例化,确保在整个应用程序中,该类只有一个实例存在。这种模式在很多场景下都非常有用,例如管理共享资源、全局配置或者提供一个全局访问点等。 单例...

    最新设计模式超级详解+Tomcat架构源码分析+Spring源码分析 资深级设计模型课程

    ├─day01-总览设计模式-04-创建型模式-单例的应用场景.mp4 ├─day01-总览设计模式-05-创建型模式-原型模式.mp4 ├─day01-总览设计模式-06-创建型模式-工厂-简单工厂模式.mp4 ├─day01-总览设计模式-07-创建型...

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

    **工厂模式**是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品时,工厂类会负责创建这个产品。这样做的好处是隐藏了对象创建的复杂性,客户端只需要知道如何获取产品...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    单例模式----数据库连接池管理类的应用

    单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在IT行业中,尤其是在处理资源密集型任务如数据库连接时,单例模式被广泛应用。数据库连接池就是这种应用的一个典型例子。 ...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如代理、装饰器、适配器)和行为型模式(如观察者、策略、命令)。这些模式都是在特定上下文中解决设计问题的模板,它们可以提高代码的...

    设计模式源代码--工厂模式与单例

    工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,通过抽象出一个创建对象的接口,使得客户端不必知道所创建的具体对象类型,而是由工厂类来决定。这样做的好处在于,当需要更换或扩展产品时,只需要...

    C++设计模式-工厂和单例

    **定义**:单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于资源管理,比如数据库连接、线程池或日志服务等,确保在整个应用中只存在一个共享的对象。 **实现**:在...

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

    工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,我们不会对客户端暴露创建逻辑,而是提供一个接口来让客户端请求特定类型的实例。这样,客户端无需知道具体的产品实现...

    单例设计模式的优缺点和设计思想

    单例设计模式是一种在软件工程中广泛使用的创建型设计模式,其核心思想是确保一个类仅有一个实例,并提供一个全局访问点。这种模式在多种场景下具有显著的优势,同时也存在一定的局限性和潜在的问题。 ### 单例设计...

Global site tag (gtag.js) - Google Analytics