设计模式-单例模式
单例模式
单例模式属于创建型模式的一种,应用于保证一个类仅有一个实例的场景下,并且提供了一个访问它的全局访问点,如spring中的全局访问点BeanFactory,spring下所有的bean都是单例。
单例模式的特点:从系统启动到终止,整个过程只会产生一个实例。
单例模式常用写法:懒汉式,饿汉式,注册式,序列化式。
样例代码
懒汉式
package com.demo.test.test2;
/**
* 单例模式--懒汉式
*/
public class Lazy {
private static Lazy lazy = null;
private Lazy(){}
public static synchronized Lazy getInstance(){
if (lazy == null) {
lazy = new Lazy();
}
return lazy;
}
public void say(){
System.out.println("i am lazy");
}
}
饿汉式
package com.demo.test.test2;
/**
* 单例模式-饿汉式
*/
public class Hungry {
private static final Hungry hungry = new Hungry();
private Hungry(){}
public static Hungry getInstance(){
return hungry;
}
public void say(){
System.out.println("i am hungry");
}
}
package com.demo.test.test2;
public class Main {
public static void main(String[] args) {
Lazy lazy1 = Lazy.getInstance();
Lazy lazy2 = Lazy.getInstance();
System.out.println(lazy1 == lazy2);
System.out.println(lazy1.equals(lazy2));
Hungry hungry1 = Hungry.getInstance();
Hungry hungry2 = Hungry.getInstance();
System.out.println(hungry1 == hungry2);
System.out.println(hungry1.equals(hungry2));
}
}
执行结果
true
true
true
true