一、创建型模式——单例模式
对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题
区别:
饿汉模式:加载类慢,但运行时获取对象的速度比较快,线程安全
懒汉模式:加载类快,但运行时获取对象的速度比较慢,线程非安全
饿汉模式:
饿汉模式会在类被加载时创建该类的唯一实例,而不管是否有程序去调用该实例
package 单例模式.饿汉模式;
/**
* 单例模式Singleton
* 保证程序中本类实例有且仅有一个
* @author ZhangJiaMin
*
*/
public class Singleton {
//私有构造方法
private Singleton(){};
//创建类的唯一实例,且为该类私有静态成员
private static Singleton instance = new Singleton();
//提供获取实例的类方法
public static Singleton getInstance(){
return instance;
}
}
懒汉模式:
懒汉模式会在需要用到类的对象时才创建唯一实例
package 单例模式.懒汉模式;
/**
* 单例模式Singleton
* 保证程序中本类实例有且仅有一个
* 懒汉模式会在需要用到类的对象时创建唯一实例
* @author ZhangJiaMin
*/
public class Singleton {
private Singleton(){}
private static Singleton instance;
public static Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
测试方法:
package 单例模式.饿汉模式;
public class Test {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2){
System.out.println("s1和s2是同一个实例");
}else{
System.out.println("s1和s2不是同一个实例");
}
}
}