饿汉式:
package singleton;
public class SingletonTestOne {
public static void main(String[] args) {
Bank bank1 = Bank.getInstance();
Bank bank2 = Bank.getInstance();
System.out.println(bank1 == bank2);//true
}
}
class Bank {
//1 私有化构造器
private Bank() {
}
//2 内部创建类的对象
//4 要求此对象也需要声明为静态的,因为对外提供的公有方法是静态的,静态的只能调用静态的结构
private static Bank instance = new Bank();
//3 提供公共的静态方法返回类的对象
//如果此方法定义为非静态的,那么需要用本类的实例化对象来调用,但是想要有本类的实例化对象又需要此方法提供,由此陷入死循环
public static Bank getInstance() {
return instance;
}
}
懒汉式:
package singleton;
public class SingletonTestTwo {
public static void main(String[] args) {
Order order1 = Order.getInstance();
Order order2 = Order.getInstance();
System.out.println(order1 == order2);//true
}
}
class Order {
private Order() {
}
private static Order instance = null;
public static Order getInstance() {
if (instance == null) {
instance = new Order();
}
return instance;
}
}