导读
1.Java模式简介
2.Java单例模式
3.单例模式优缺点及使用场景
Java模式简介
对于一个程序设计而言,会有前人形成的一些套路值得我们借鉴,就像每个建筑工程师都会掌握一些建筑模型一样,我们把这些套路叫做模式
常用模式
Java单例模式
package com.hala.single;
//饿汉式:创建对象实例时直接初始化 利用空间换取时间
public class SingleHunery {
//1.创建类中的私有构造
private SingleHunery(){
}
//2.创建该类型的私有静态实例
private static SingleHunery instance=new SingleHunery();
//3.创建公有静态方法返回静态实例对象
public static SingleHunery getInstance(){
return instance;
}
}
package com.hala.test;
import com.hala.single.SingleHunery;
public class Test {
public static void main(String[] args) {
//SingleHunery one =new SingleHunery();
//上边写法是错误的,因为private SingleHunery()构造方法是私有的
SingleHunery one=SingleHunery.getInstance();
SingleHunery two=SingleHunery.getInstance();
System.out.println(one);
System.out.println(two);
//one 和two的地址相同,说明他们只是同一个房间的两把钥匙
}
}
输出结果
com.hala.single.SingleHunery@7852e922
com.hala.single.SingleHunery@7852e922
package com.hala.single;
//懒汉式:第一次创建对象实例时才初始化 利用时间换取空间
public class SingleLazy {
//1.创建类中的私有构造
private SingleLazy(){
}
//2.创建该类型的私有静态实例
private static SingleLazy instance=null;
//3.创建公有静态方法返回静态实例对象
public static SingleLazy getInstance(){
if(instance==null)
instance=new SingleLazy();
return instance;
}
}
package com.hala.test;
import com.hala.single.SingleLazy;
public class Test {
public static void main(String[] args) {
//SingleHunery one =new SingleHunery();
//上边写法是错误的,因为private SingleHunery()构造方法是私有的
SingleLazy one=SingleLazy.getInstance();
SingleLazy two=SingleLazy.getInstance();
System.out.println(one);
System.out.println(two);
}
}
输出结果
com.hala.single.SingleLazy@7852e922
com.hala.single.SingleLazy@7852e922