单例模式
目录
什么是单例模式?
单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)——摘自百度百科。
我们如何去使用?
饿汉式:
public class Main {
public static void main(String[] args) {
hungry hungry1 = hungry.getHungry();
}
}
class hungry{
private static hungry hungry = new hungry();
private hungry(){
}
public static hungry getHungry() {
return hungry;
}
}
懒汉式:
public class Main {
public static void main(String[] args) {
lazy lazy1 = lazy.getLazy();
}
}
class lazy{
private static lazy lazy1;
private lazy(){
}
public static lazy getLazy() {
if (lazy1==null){
lazy1 = new lazy();
}
return lazy1;
}
}
两种模式的存在的问题:
饿汉式:
饿汉式之所以叫饿汉式,就是它不管三七二十一,着急的new了一个对象(可能你只是调用一下hungry的静态属性,它也创建了一个hungry的对象),可能存在资源浪费问题。
懒汉式:
懒汉式之所以叫懒汉式,就是它的对象只会创建一次,循环使用,而且是你需要时才创建,不存在调用静态属性对象也被创建的问题(lazy lazy1 不会调用构造器),但是当lazy1为null时,多线程同时涌入的话会存在线程安全问题。