欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java基础——单例设计模式

程序员文章站 2022-03-06 18:36:10
所谓的单例设计吗,模式就是保证某个类只有一个对象实例要想满足上述的情况,首先我们需要把构造器(函数)设置成private,这样的话就不可以在类的外部通过new的方式来创建对象但是仍然可以在类的内部创建对象,创建的类的对象要通过该类的静态函数进行返回,因为静态函数中只能访问静态的成员变量,所以要定义相应的静态成员变量。单例设计模式我在这里介绍两种“饿汉式”,“懒汉式”饿汉式的:优点:线程安全(无论多少人调用,只会出现一个对象)缺点:对象的加载的时间长懒汉式:优点:用的时候才会创建...

所谓的单例设计吗,模式就是保证某个类只有一个对象实例

要想满足上述的情况,

  1. 首先我们需要把构造器(函数)设置成private,这样的话就不可以在类的外部通过new的方式来创建对象
  2. 但是仍然可以在类的内部创建对象,创建的类的对象要通过该类的静态函数进行返回,
  3. 因为静态函数中只能访问静态的成员变量,所以要定义相应的静态成员变量。

单例设计模式我在这里介绍两种“饿汉式”,“懒汉式”
饿汉式的:

  • 优点:线程安全(无论多少人调用,只会出现一个对象)
  • 缺点:对象的加载的时间长

懒汉式:

  • 优点:用的时候才会创建,节省空间
  • 缺点:线程不安全(因为是用的时候才会创建,所以存在产生创建的对象冲突的特点)

饿汉式代码:

public class Singleton_eHanShi {
	public static void main(String[] args) {
		Person p1 = Person.getInstance();
		Person p2 = Person.getInstance();
		System.out.println(p1);
		System.out.println(p2);
		p1.show();
	}
}

//单例模式——>饿汉式
class Person{
	//1.将构造函数私有化
	private Person() {
	}
	
	//2.创建一个私有静态的内部对象向(特点:直接创建对象)
	private static Person instance = new Person();
	
	//创建一个共有的静态get方法,进行返回上面创建的对象
	public static Person getInstance() {
		return instance;
	}
	
	//创建一个常规方法
	public void show() {
		System.out.println("饿汉:Person中的show方法被调用!");
	}
}

结果:
java基础——单例设计模式
懒汉式代码:

public class Singleton_lanHanShi {

	public static void main(String[] args) {
		Person2 p1 = Person2.getInstance();
		Person2 p2 = Person2.getInstance();
		System.out.println(p1);
		System.out.println(p2);
		p1.show();
	}

}

//单例设计模式——>懒汉式
class Person2{
	//定义一个私有构造函数,使在类的外部不能够new对象
	private Person2() {
		
	}
	
	//2.声明当前类的对象,并不进行初始化
	private static Person2 instance = null;
	
	//创建一个共有的静态get方法,进行返回上面创建的对象
	public static Person2 getInstance() {
		if(instance==null) {
			instance = new Person2();
		}
		return instance;
	}
	
	//创建一个常规的方法
	public void show() {
		System.out.println("懒汉:Person中的show方法被调用!");
	}
}

结果:
java基础——单例设计模式

本文地址:https://blog.csdn.net/m0_45067620/article/details/111967514