单例模式:
顾名思义只有一个实例的模式
创建一个单例的必备条件为:
1、私有的构造方法;2、私有的静态引用变量;3、返回静态引用变量的公开方法
单例模式根据创建实例对象的阶段时间不同将分为两种形式的单例:
一种是饿汉模式:
饿汉模式就是这条汉子非常饥饿,只要一开饭就立马要吃饱。即:在单例被加载的时候就创建实例化一个对象交给引用
public class Singleton{
private static Singleton instance = new Singleton();//私有的静态引用变量
private Singleton(){}//私有构造方法
public static Singleton getInstance(){
return instance;
}
//返回静态引用变量的公开方法
}
另一中是懒汉模式。
懒汉呢就是懒得动弹,只有你踹他一脚他才行动起来干事。即:在调用获取单例对象的时候才实例化引用
public class Singleton{
private static Singleton instance;//私有的静态变量的引用
private Singleton(){}//私有构造方法
public static Singleton getInstance(){
if(instance == null ){
instance = new Singleton();
}
return instance;
}
}
为什么程序员都比较青睐单例模式呢:
a、内存中只存在一个对象,减少了内存的消耗
b、避免频繁的创建对象销毁对象,提高性能
c、可以全局访问,避免了对共享资源的多重访问
使用单例的场景有哪些?
a、需要频繁创建的对象
b、创建耗时耗资源而且经常使用的对象
c、数据库持久化的类等
单例注意事项:
a、只能使用单例类中的公有方法获得单例对象,不能使用反射,否则将会实例化一个新的对象
b、多线程使用单例共享资源时,要注意线程安全问题。