`

单列设计模式

    博客分类:
  • Java
 
阅读更多

2016.11.10

 

单列设计模式

 java中总共有23种设计模式,其中,单列式设计模式是最常见的一种,单列式又主要分为三种:懒汉式单例、饿汉式单例、登记式单例。我们主要讲其中两种。

 所谓的模式:就是解决一系列问题的应用

 饿汉单例设计模式

1. 私有化构造函数。

2. 声明本类的引用类型变量,并且使用该变量指向本类对象。

3. 提供一个公共静态的方法获取本类的对象。

 懒汉单例设计模式:

1. 私有化构造函数。

2. 声明本类的引用类型变量,但是不要创建对象,

3. 提供公共静态的方法获取本类的对象,获取之前先判断是否已经创建了本类对象,如果已经创建了,那么直接返回对象即可,如果还没有创建,那么先创建本类的对象,然后再返回。

 

// 饿汉式
class Single{
	//声明本类的引用类型变量,并且使用该变量指向本类对象
	private static Single s = new Single();
	//私有化构造函数
	private Single(){}
	//提供一个公共静态的方法获取本类的对象
	public static Single getInstance(){
		return s;
	}
	
}

 

//懒汉式
class Single2{
	//声明本类的引用类型变量,不创建本类的对象
	private static Single2 s;
	//私有化了构造函数
	private Single2(){}
	
	public static Single2 getInstance(){
		if(s==null){
			s = new Single2();
		}
		return s;
	}
}

 

public class Demo5 {

	public static void main(String[] args) {
        Single s1 = Single.getInstance();
        Single s2 = Single.getInstance();
        System.out.println("是同一个对象吗?"+(s1==s2));
	}

}

推荐使用: 饿汉单例设计模式。  因为懒汉单例设计模式会存在线程安全问题,目前还不能保证一类在内存中只有一个对象。

什么是线程安全?

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

分享到:
评论

相关推荐

    设计模式之单例模式

    单例模式是软件设计模式中的一种基础模式,它在Java编程中被广泛应用。单例模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式可以有效地控制资源的使用,限制实例的数量,提高性能,尤其是在...

    设计模式(抽象模式·工厂模式·代理模式·单列模式·)

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。本资料包包含的是四种重要的设计模式:抽象模式、工厂模式、代理模式和单例模式。 1. 抽象模式: 抽象模式...

    Qt单例设计模式(1-8)

    在软件开发中,设计模式是一种在特定情境下解决常见问题的经验总结,被广泛应用于各种编程语言中。在Qt框架中,单例设计模式是一种经常被用到的设计模式,它确保一个类只有一个实例,并提供全局访问点。这个模式在...

    设计模式--单例模式java例子

    单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于可以控制实例的数量,减少资源消耗,同时便于协调整个...

    java 设计模式(列如:单列,工厂,桥梁,===)

    Java设计模式是面向对象编程中的一种最佳实践,它是一套被广泛接受并应用于解决常见问题的解决方案。设计模式并不是特定的代码或库,而是一种在特定情境下如何组织和构建软件组件的经验总结。它们提供了在Java或其他...

    C#单列模式

    单例模式是软件设计模式中的一种经典模式,它在C#编程中被广泛使用,尤其在需要确保一个类只有一个实例并且提供全局访问点时。单例模式的主要目标是控制类的实例化过程,保证在整个应用程序运行期间,该类只创建一个...

    设计模式之单例模式.md

    设计模式之单例模式,单列模式的几种实现形式,以及其优缺点,还有就是示例,对初步了解单列模式的有所帮助

    IOS设计模式全解析与Objective-C编程之道之 .pdf.zip

    iOS 设计模式,文字通过代码与例子,清晰的讲解了设计模式:工厂模式、单列、接口适配、桥接、中介者、观察者、抽象集合、迭代器、行为扩展、算法封装、责任链、装饰、访问者、模板方法、命令、性能与对象访问、代理...

    单列模式用例

    单列模式(Singleton Pattern)是设计模式中的一种经典模式,主要用来确保一个类只有一个实例,并提供一个全局访问点。这种模式常被用于控制资源的共享,例如配置管理、线程池或者数据库连接池等场景。在Java编程...

    单列模式详解

    单例模式是设计模式中的一种常见模式,主要应用于确保一个类只有一个实例,并提供一个全局访问点。这种模式在软件工程中极为有用,特别是在资源管理、线程池、数据库连接等场景下,能够有效地控制资源的消耗,提高...

    c#设计模式之单例模式的实现方式

    单例模式对于我们来说一点也不模式,是一个常见的名称,单例模式在程序中的实际效果就是:确保一个程序中只有一个实例,并提供一个全局访问点,节省系统资源 单例模式无论是在实际开发中还是在软件应用中比较常见,...

    qt 单例模式,模板

    在编程领域,单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Qt框架中,我们同样可以应用单例模式来管理共享资源,如数据库连接。以下是对标题和描述中涉及知识点的详细解释...

    单例模式演示PPT和实例

    单例模式是一种设计模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。在软件工程中,这种模式常用于控制共享资源的访问,比如配置信息类、数据库连接池管理等。 单例模式的名称是...

    单例模式的几种实现方式demo

    单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制数据库连接、缓存管理、线程池等。下面我们将深入探讨单例模式的几种实现...

    RecycleDemo多列单列混排

    3. **ViewHolder**: `ViewHolder` 模式是 `RecyclerView` 中的一个设计模式,用于缓存视图引用,避免频繁查找视图导致的性能损失。创建一个 `ViewHolder` 类,继承自 `RecyclerView.ViewHolder`,并持有需要操作的...

    农村简易羊舍设计模式图[收集].pdf

    以下是对该设计模式的详细解析: 首先,羊舍的布局和尺寸至关重要。根据描述,羊舍采用的是肉羊单列式暖棚圈舍的设计,其主要尺寸包括:后墙与食槽内沿之间的距离354cm,食槽内沿与扣棚前墙之间的距离212cm,后墙...

    单例模式详解

    单例模式是 Java 设计模式中的一种常见模式,旨在保证整个应用中只有一个类的实例存在。单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例。下面对单例模式的特点、实现方式和应用场景进行详细介绍。 单例模式...

Global site tag (gtag.js) - Google Analytics