`

java单例设计模式

 
阅读更多

一、单例模式的主要特点:

   1、只能有一个实例。

   2、在单例类中创建自己的实例。

   3、创建的实例通过一个公有的方法去让其它类去使用。

二、实现上面三个的方式是:

   1、将构造方法私有化。

   2、在类中创建一个本类对象。

   3、提供一个方法可以获取该对象。

三、单例模式分为两种:1、饿汉式。2、懒汉式。

四、具体的实现方法如下代码:

   1、饿汉式:这种也是开发中常用的。它不涉及线程安全问题

package cn;

public class Persion {
	private String name;
	
	public void setName(String name){
		this.name = name;
	}
	
	public String getName(){
		return name;
	}
	
	private Persion(){//提供一个私有的构造方法
		
	}
	
	private static Persion p = new Persion();//创建一个私有的对象
	
	public static Persion getInstance(){//提供一个外部访问的对象的方法
		return p;
	}
}

调用代码:

package cn;

public class Demo1 {
	public static void main(String[] args) {
		Persion p = Persion.getInstance();
		Persion p1 = Persion.getInstance();
		System.out.println(p==p1);
	}
}

 执行结果:

true

    2、懒汉式:这种在开发中不常用,因为它涉及线程不安全的情况,但是可以用过线程同步解决,如果这样比较繁琐,还不如用饿汉式比较方便。

package cn;

public class Persion {
	private String name;
	
	public void setName(String name){
		this.name = name;
	}
	
	public String getName(){
		return name;
	}
	
	private Persion(){//提供一个私有的构造方法
		
	}
	
	private static Persion p = null;//创建一个私有的对象的引用
	
	public static Persion getInstance(){//提供一个外部访问的对象的方法
		if(p==null){
		p = new Persion();//判断是否为空,如果为空就创建对象,就在这里有线程安全问题,如果多两个人同时访问的情况下,会有创建多个对象的情况
		}
		return p;
	}
}

 调用上面的代码和结果和饿汉式的一样。

结果懒汉式的方式如下:

package cn;

public class Persion {
	private String name;
	
	public void setName(String name){
		this.name = name;
	}
	
	public String getName(){
		return name;
	}
	
	private Persion(){//提供一个私有的构造方法
		
	}
	
	private static Persion p = null;//创建一个私有的对象的引用
	
	//public static synchronized Persion getInstance(){//如果使用这种,这种的相率很低,不宜使用。
	public static Persion getInstance(){//提供一个外部访问的对象的方法
		if(p==null){
			synchronized(Persion.class){
				if(p==null){//使用双重判断
					p = new Persion();//判断是否为空,如果为空就创建对象,就在这里有线程安全问题,如果多两个人同时访问的情况下,会有创建多个对象的情况
				}
			}
		}
		return p;
	}
}

 

 

分享到:
评论

相关推荐

    java 单例设计模式

    Java中的单例设计模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于管理共享资源,如数据库连接、线程池或配置对象。单例模式的关键在于限制类的实例化,防止多个实例的...

    java单例设计模式 4中实现方式,重点介绍了静态内部类的实现方式

    Java单例设计模式详解 Java单例设计模式是一种创建型设计模式,可以保证一个类只有一个实例,并提供全局访问点。单例模式在实际开发中经常使用,可以避免多个实例引起的资源浪费和同步问题。常见的Java实现方式有...

    java单例设计模式的好处

    单例设计模式是软件开发中一种重要的设计模式,它的核心思想是确保一个类只有一个实例,并提供全局访问点。在Java中,单例模式通常用于控制特定类的实例化过程,以达到节省系统资源、控制并发访问和实现数据共享等...

    java单例设计模式-饿汉式-懒汉式.pdf

    Java 单例设计模式主要分为两种实现方式:饿汉式和懒汉式。这两种方式都是为了确保一个类只有一个实例,并且提供全局访问点。 **饿汉式**: 饿汉式单例在类加载时就完成了实例化,因此是静态常量的方式,确保了线程...

    java单例设计模式-饿汉式-懒汉式[归纳].pdf

    Java单例设计模式是软件开发中常用的设计模式之一,其核心在于确保一个类只有一个实例并提供全局访问点。单例模式常用于管理共享资源,如配置信息的读取,以简化系统协调和避免资源浪费。 单例模式的两个主要特点:...

    java单例设计模式-饿汉式-懒汉式.docx

    Java中的单例设计模式是一种常用的设计模式,它确保一个类只有一个实例,并且提供一个全局访问点。单例模式常用于管理资源,如配置信息的读取,或者在系统中需要一个全局协调者的情况下。 单例设计模式有两大关键点...

    java单例设计模式-饿汉式-懒汉式 (2).pdf

    Java中的单例设计模式是一种确保一个类只有一个实例并提供一个全局访问点的设计模式。它主要分为两种实现方式:饿汉式(Eager Initialization)和懒汉式(Lazy Initialization)。 ### 1. 饿汉式单例设计模式 饿汉...

    java单例设计模式-饿汉式-懒汉式 (2).docx

    单例设计模式是一种常用的设计模式,其主要目的是确保一个类只有一个实例,并且提供一个全局访问点。这种模式在Java中有两种常见的实现方式:饿汉式和懒汉式。 1. 饿汉式单例: 饿汉式单例在类加载时就完成了初始化...

    Java的单例设计模式

    单例设计模式是软件设计模式中的经典...总的来说,Java的单例设计模式是一种强大的工具,可以帮助我们有效地管理全局资源,提高系统的效率和稳定性。正确理解和使用单例模式,对于提升代码质量和可维护性具有重要意义。

    java单例设计模式-饿汉式-懒汉式[参照].pdf

    单例设计模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。在Java中,单例模式有两种常见的实现方式:饿汉式和懒汉式。 1. **饿汉式**: 饿汉式单例在类加载时即创建了...

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...

    Java中懒汉单例设计模式线程安全测试

    Java中懒汉单例设计模式线程安全测试,单例设计模式的测试

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

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

    Java 单例模式.pptx

    单例模式是一种常用的软件设计模式,在这种模式中,一个类只能拥有一个实例,并且该类必须自行创建并提供这个实例。通常,单例模式用于确保某个类在整个应用程序生命周期中只存在一个实例,这有助于节省资源并简化对...

    Java单例模式设计

    Java单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供全局访问点。这种模式在需要频繁创建和销毁对象的场景中,或者当对象昂贵时(如数据库连接),能够节省系统资源,提高效率。本篇文章将深入探讨...

    Java 单例模式 工具类

    Java中的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Java编程中,单例模式常用于控制资源的访问,比如数据库连接池、线程池或者日志对象等。本篇文章将深入探讨如何在Java中...

    单例设计模式

    Java经典的设计 模式单例设计模式,此资源为整理的ppt文档

    浅谈java单例设计模式

    所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的构造器的访问...

Global site tag (gtag.js) - Google Analytics