单例模式:也叫单子模式,属于“创建模式”
一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类。
单例类一个最重要的特点:类的构造方法是私有的。
何时使用:系统全局有且只有一个实例。
单例模式的懒汉式:
public class Single {
//需要将变量定义成全局变量,这样不会再方法调用完直接销毁,使用static原因是静态方法中不能直接调用非静态属性
private static Single single = null;//属性私有化防止在外部赋值为null
//构造方法私有化,让其在类的外部一个对象都不能创建
private Single(){}
//我们可以类的内部创建对象,通过方法返回
//因为类的外部不能创建对象,所以只能选泽静态方法进行返回对象
public static Single getSingle(){
//Single single = new Single();
if(single == null){
single = new Single();
}
return single;
}
}
单例设计模式的饿汉式:
public class Singles {
private static Singles singles = new Singles();
private Singles(){}
public static Singles getSingles(){
return singles;
}
}
两种方式的区别:
懒汉式 | 饿汉式 | ||
效率 | 低 | 高 | 懒汉式每次执行方法的时候都要做出判断所以懒汉式的效率没有饿汉式高。 |
内存 | 少 | 多 | 饿汉式在类加载的时候就会直接将对象创建出来,但此时可能不会直接使用,而懒汉式会在需要使用的时候才创建对象,所以相对而且懒汉式比饿汉式占用内存少。 |