设计模式
设计模式是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式。就像经典的棋谱,不同的棋局,我们用不同的棋谱,“ 套路 ”。
单例模式
采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
单例模式之饿汉式
public class SingletonTest1 {
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.静态方法中无法使用非静态结构,所以需要用static修饰
private static Bank instance = new Bank();
//3.创建get方法返回类对象
/*getInstance 必须定义成 static 静态方法,
因为getInstance 是用来创建对象的方法,不执行此方法就没有对象
没有对象可以去调用此方法,就无法获得对象,陷入一个死胡同中
只能通过静态方法 类.方法来调用getInstance 让它去创建对象
*/
public static Bank getInstance() {
return instance;
}
}
单例模式之懒汉式
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.创建getInstance方法返回对象
public static Order getInstance() {
/* instance = new Order();
return instance;
以上初始化返回对象方法有问题,若main方法多次调用getInstance方法
,每次调用会new一个新对象*/
//所以需要判断instance值是否为null
if (instance == null) {
instance = new Order();
}
return instance;
}
}
饿汉式一上来就把对象创建出来,不管你用不用,反正我给你创建了,比较饿。
懒汉式是你用我才创建,你不用我不创建,比较懒。
饿汉式和懒汉式的比较
饿汉式 :
优点:线程安全的
缺点:加载时间过长
懒汉式 :
优点:延迟对象的创建
缺点:线程不安全的