内部静态类方式
public class DogFactory {
private static class DogHolder {
public static Dog dog = new Dog();
}
public static Dog getDog() {
return DogHolder.dog;
}
}
双重校验锁方式
public class DogFactory {
private volatile static Dog dog;
public static Dog getDog() {
if (dog == null) {
synchronized (DogFactory.class) {
if (dog == null) {
dog = new Dog();
}
}
}
return dog;
}
}