1.单例设计模式:采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。单例设计模式有饿汉式和懒汉式两种。
2.饿汉式和懒汉式单例模式的实现
1).饿汉式单例模式
public class SingletonTest1 {
public static void main(String[] args) {
Bank bank1=Bank.getInstance();
Bank bank2=Bank.getInstance();
System.out.println(bank1==bank2);
}
}
//饿汉式单例模式(一上来就造好对象)
class Bank{
//1.私有化类的构造器
private Bank(){
}
//2内部创建类的对象
//4要求此对象也必须声明为静态的
private static Bank instance=new Bank();
//3.提供公共的静态方法返回类的对象
public static Bank getInstance(){
return instance;
}
}
2.懒汉式单例模式
public class SingletonTest2 {
public static void main(String[] args) {
Order order1=Order.getInstance();
Order order2=Order.getInstance();
System.out.println(order1==order2);
}
}
//懒汉式单例模式(什么时候用什么时候造)
class Order{
//1.私有化类的构造器
private Order(){
}
//2.声明当前类对象,没有初始化
private static Order instance=null;
//3.声明一个公共的,静态的返回当前类对象的方法
public static Order getInstance(){
if(instance==null){
instance=new Order();
}
return instance;
}
}
3.饿汉式和懒汉式单例模式的区别(如果让写单例模式,那么优先写饿汉式)
饿汉式:缺点:一开始就把对象造好了,导致对象的加载时间过长。
优点:线程安全
懒汉式:优点:延迟对象的创建
缺点:目前写法是线程不安全