Live2D
复制代码

08-单例模式初步

单例模式初步

这里只是简单实现一下单例模式,不作深入讨论

1、单例模式介绍

package h单例模式初步;

public class User {
	
	private String name="jakhd";
	
	int age=10;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

/*
 *   单例模式是23种设计模式中最简单的模式
 *   主要作用:
 *           为了保证JVM中某一个类型的java对象永远只有一个。
 *           为了节省内存开销
 */
package h单例模式初步;

public class UserTest {
	
	public static void main(String[] args){
		
		
	User u1 = new User();
	User u2 = new User();
	
	//如果==两边都是基本数据类型,则比较这两个基本数据的大小
	//如果==两边都是引用数据类型,则比较的是内存地址是否相同
	System.out.println(u1==u2);//false
	//u1.setName("dshkasjh");
	System.out.println(u1.getName());
	System.out.print(u1.age);

	}
	
}

2、实现单例模式

单例模式有懒汉式和饿汉式两种,前者是在需要对象时才会创建单例对象,节省空间,效率不如后者;后者是在类加载阶段就创建单例对象,如果不用会占内存,但效率高。

/*
 *    实现单例模式
 *    
 *    要领:
 *         1.首先构造方法私有化private
 *         2.对外提供一个公开且静态的获取当前类型(返回值为当前类)对象的方法
 *         3.最后提供一个当前类型的静态变量
 *         
 *         单例模式分两种:
 *         饿汉式单例:在类加载阶段就创建了对象,就是说在提供的静态变量上赋值时new一个对象给静态变量,因为静态变量在类加载阶段赋值
 *         懒汉式单例:用到对象的时候才创建对象,即在定义静态变量的时候给其赋一个null,用到的时候判断静态变量是否为空,为null则new
 * 					   一个对象,并将内存地址赋给静态变量;不为null则直接返回静态变量
 */
     //懒汉式单例
package h单例模式初步;

public class Singleton {
	
	//静态变量
	private static Singleton s = null;
	
	private Singleton(){
		
	}
	
	//对外提供一个公开的获取Singleton类型对象的方法
	public static Singleton get(){
		if (s==null){
			  s=new Singleton();
		}
		return s;
	}

}

package h单例模式初步;

public class SingleTest01 {
	
	public static void main(String[] args){
		
		
		Singleton u1 = Singleton.get();//当要调用方法到不是本类中,类名. 不能省
		Singleton u2 = Singleton.get();//Singleton.set=s = new Singleton()
		
		System.out.println(u1==u2);

}
}
posted @ 2021-07-22 22:13  Milen-jie  阅读(31)  评论(0编辑  收藏  举报