public class Singleton {
private Singleton() {}
private volatile static Singleton instance;
//第一层锁:保证变量可见性
public static Singleton getInstance() {
if (single == null) {//第一次判空:无需每次都加锁,提高性能
synchronized (Singleton.class) {//第二层锁:保证线程同步
if (single == null) {//第二次判空:避免多线程同时执行getInstance()产生多个single对象
single = new Singleton();
}
}
}
return single;
}
}
public class Singleton {
private Singleton() {}
private static Singleton single = new Singleton();
public static Singleton getInstance() {
return single;
}
}
public class VIPCenter {
void serviceVIP(T extend User user>) {
if (user instanceof SlumDogVIP) {
// 穷 X VIP,活动抢的那种
// do somthing
} else if(user instanceof RealVIP) {
// do somthing
}
// ...
}
public class VIPCenter {
private Map<User.TYPE, ServiceProvider> providers;
void serviceVIP(T extend User user) {
providers.get(user.getType()).service(user);
}
}
interface ServiceProvider{
void service(T extend User user) ;
}
class SlumDogVIPServiceProvider implements ServiceProvider{
void service(T extend User user){
// do somthing
}
}
class RealVIPServiceProvider implements ServiceProvider{
void service(T extend User user) {
// do something
}
}
评论