二、单例设计模式
单例(单个实例):在软件中,某个类只能被实现一次,并且该类只提供一个取得其对象的方法
1.饿汉式
一上来就创建一个对象
提前创建对象,随时可以用。
饿汉式可能造成创建了对象没有使用。
【单例模式-饿汉式步骤】
- 构造器私有化(防止外部类new该类)
- 在类的内部实例化(使用静态属性)
- 向外部提供一个公共方法,返回对象(静态方法)
class dome{
private String name;
//1.私有化构造器
private dome(String name){
this.name = name;
}
//2.在类的内部new对象(使用静态属性static)
private static dome dm = new dome("饿汉");
//3.向外提供公共方法获取对象(静态方法)
public static dome Getdome(){
return dm;
}
}
2.懒汉式
啥时用,啥时候造,延迟对象创建
当需要创建的时候再调用
防止资源浪费
【单例模式-懒汉式步骤】
- 构造器私有化(防止外部类new该类)
- 提供一个该类的静态属性
- 向外提供一个创建该类的公共方法
class dome{
private String name;
//1.私有化构造器
private dome(String name){
this.name = name;
}
//2.提供一个该类的静态属性
private static dome dm;
//3.向外提供一个创建该类的公共方法
public static dome Getdome(){
if(dm == null){
dm = new dome("懒汉");
}
return dm;
}
}
3.饿汉式VS懒汉式
-
饿汉式与懒汉式的本质区别在于创建对象的时机不同,
饿汉式:在对象加载的时候就会创建
懒汉式:在需要使用该对象的时候再调用
-
饿汉式是线程安全的,懒汉式是线程不安全的。
懒汉式:如果同一时间多个线程进入方法,就会创建多个对象,打破了单例。