单例模式
定义
Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类
只有一个实例,而且自行实例化并向整个系统提供这个实例。)
应用场景
当一个对象需要在应用中被频繁调用,或初始化需要非常大的开销时,可以使用单例模式让实例对象常驻内存,减少创建对象所花的时间和资源消耗。例如Spring MVC中,@Controller、@Service等注解修饰的bean都默认为单例模式。
代码示例
package singleton;
/**
* 单例模式场景
* @author 谢仲东 2018/8/6 20:59
* Description:
*/
public class SingletonImpl {
public static void main(String[] args) {
HighFrequencyObject obj = HighFrequencyObject.getInstance();
obj.method1();
obj.method2();
}
}
class HighFrequencyObject {
private static HighFrequencyObject instance;
static {
instance = new HighFrequencyObject();
}
/**
* 获取静态实例方法
*/
public static HighFrequencyObject getInstance () {
return instance;
}
/**
* 私有化构造函数,限制外部创建对象
*/
private HighFrequencyObject() {
System.out.println("做一些耗时间耗资源的初始化操作...");
};
public void method1() {
System.out.println("成员方法1...");
}
public void method2() {
System.out.println("成员方法2...");
}
}