单例模式:
单例模式指的是在应用整个生命周期内只存在一个实例。单例模式是一种被广泛使用的设计模式。他能够避免实例对象的重复创建,减少创建实例的系统开销,节省内存。
静态类:
静态类就是一个类内部是静态方法和静态field,构造器被private修饰,因此不能被实例化。Math类就是一个静态类。
两者的区别:
(1)单例模式更加灵活,其中的方法可以被重写,而静态类中的方法皆为静态,无法被重写;
(2)当一个类占用资源多时,单例模式可以采用懒加载模式,静态类无法做到.
关于“饿汉模式”,“懒汉模式”:
静态的绑定是在编译期进行的,也就是说静态类中的方法从一开始就全部加载完毕了。而单例模式分为“饿汉模式”、“懒汉模式”。在“饿汉模式下”,单例模式的类在获取instance前就已经初始化好了,这种方式适合类占用资源较少的情况;在“懒汉模式”下,单例模式可以在使用时才被初始化,这种方式适合类占用资源较多的情况,这样就成功避免了资源浪费的问题。
两者之间的选择:
当只需要一些简单的工具方法时,使用静态类,因为静态类更方便,更快速。当你需要面向对象的能力时(继承,多态),使用单例模式。