单例模式
饿汉式
package ink.yql.singleton02;
public class User01 {
private static User01 user = new User01();
private User01() {
}
public static User01 getInsetnes() {
return user;
}
}
package ink.yql.singleton02;
public class User02 {
private static User02 user;
static {
user = new User02();
}
private User02() {
}
public static User02 getInsetnes() {
return user;
}
}
懒汉式
package ink.yql.singleton02;
public class User03 {
private static User03 user;
private User03() {
}
public static User03 getInsetnes() {
if (user ==null) {
user = new User03();
}
return user;
}
}
package ink.yql.singleton02;
public class User04 {
private static User04 user;
private User04() {
}
public static User04 getInsetnes() {
if (user ==null) {
synchronized(User04.class) {
user = new User04();
}
}
return user;
}
}
package ink.yql.singleton02;
public class User05 {
private static User05 user;
private User05() {
}
public synchronized static User05 getInsetnes() {
if (user ==null) {
user = new User05();
}
return user;
}
}
package ink.yql.singleton02;
public class User06 {
private volatile static User06 user;
private User06() {
}
public static User06 getInsetnes() {
if (user ==null) {
synchronized(User06.class) {
if(user == null) {
user = new User06();
}
}
}
return user;
}
}
package ink.yql.singleton02;
public class User07 {
private User07() {
}
private static class Insetnes{
private static final User07 USER= new User07();
}
public static User07 getInsetnes() {
return Insetnes.USER;
}
}
package ink.yql.singleton02;
public enum User08 {
user;
}