一、设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
java一共有23种设计模式:
二、单例模式
概念:单例模式可以说是大多数开发人员在实际中使用最多的,常见的Spring默认创建的bean就是单例模式的。单例模式有很多好处,比如可节约系统内存空间,控制资源的使用。
特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
三、单例模式的实现
1.饿汉式实现方法:
public class Singleton1 {
public static void main(String[] args) {
MySingle single1 = MySingle.getSingle();
MySingle single2 = MySingle.getSingle();
System.out.println(single1 == single2);//true,==比较的是地址值,说明是同一个对象
}
}
class MySingle{
private MySingle(){ };
static private MySingle single = new MySingle();
static public MySingle getSingle(){
return single;
}
}
2.懒汉式实现方法:
public class Singleton2 {
public static void main(String[] args) {
MySingle2 s1 = MySingle2.getMySingle2();
MySingle2 s2 = MySingle2.getMySingle2();
System.out.println( s1 == s2 );//true,比较的是地址值,说明是同一个对象
}
}
class MySingle2{
private MySingle2(){}
static private MySingle2 single2;
static Object o = new Object();
synchronized static public MySingle2 getMySingle2(){
synchronized (o) {
if (single2 == null) {
single2 = new MySingle2();
}
return single2;
}
}
}
3.注意:在懒汉式实现的时候,遇到了同一个公共资源被多条语句使用的场景,如果引入多线程的话,就会引发线程安全隐患,所以添加了同步锁来解决这一麻烦。