单例设计模式
-
含义:
采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例。
-
实现方法:
- 饿汉式
public class Singleton { public static void main(String[] args) { Bank bank1 = Bank.getInstance(); Bank bank2 = Bank.getInstance(); System.out.println(bank1 == bank2); //true 静态方法,地址值相同 } } class Bank{ //私有化类构造器 private Bank() { } //内部创建类的对象 private static Bank instance = new Bank(); //提供公共的静态方法,返回类的对象(因为声明为private不能从外部造对象,所以让该方法静态化,直接调用) public static Bank getInstance() { return instance; } }
- 懒汉式
public class Singleton { public static void main(String[] args) { Order order1 = Order.getInstance(); Order order2 = Order.getInstance(); System.out.println(order1 == order2); } } class Order{ //私有化类的构造器 private Order() { } //声明当前对象,但不初始化 private static Order instance = null; //声明public、static的返回当前类对象的方法 public static Order getInstance() { if(instance == null) { instance = new Order(); } return instance; } }
-
懒汉式与饿汉式的对比
饿汉式:
好处:饿汉式是线程安全的。
坏处:对象加载时间过长。
懒汉式:
好处:延迟对象的创建。
坏处:线程不安全。