饿汉式
package exer1;
/**
* 单例设计模式:
* 1.所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例
*
* 2.如何实现?
* 1.饿汉式
* 2.懒汉式
*/
public class Singleton {
public static void main(String[] args) {
Bank b1 = Bank.getInstance();
Bank b2 = Bank.getInstance();
System.out.println((b1 == b2));//True
}
}
class Bank{
//1.私有化类的构造器
private Bank(){
}
//2.内部创建类的对象
//4.要求此属性(对象)也必须声明为静态的
private static Bank instance = new Bank();
//3.提供公共的静态的方法,返回类的对象
public static Bank getInstance(){
return instance;
}
}
懒汉式
package exer1;
/**
* 单例模式的懒汉式实现:
*/
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.声明当前类对象,没有初始化
//4.此对象也必须声明为static的
private static Order instance = null;
//3.声明一个叫public的,静态的返回当前类对象的方法
public static Order getInstance(){
if (instance == null){
instance = new Order();
}
return instance;
}
}
如何区分?
懒汉式:好处:延迟对象创建
目前写法的坏处就是线程不安全—>到多线程内容时再修改
饿汉式:坏处:对象加载时间过长
好处:线程是安全的