考虑用静态工厂方法替代构造器
public interface Service {
}
//////////////////////////////////////////////////////////////////////////////////////////////////
public interface Provider {
Service newService();
}
///////////////////////////////////////////////////////////////////////////////////////////////////
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Services {
private Services(){}
private static final Map<String,Provider> providers = new ConcurrentHashMap<String,Provider>();
public static final String DEFAULT_PROVIDER_NAME = "<def>";
public static void registerDefaultProvider(Provider p){
registerProvider(DEFAULT_PROVIDER_NAME, p);
}
public static void registerProvider(String name, Provider p) {
providers.put(name, p);
}
public static Service newInstance() {
return newInstance(DEFAULT_PROVIDER_NAME);
}
public static Service newInstance(String name) {
Provider p = providers.get(name);
if (p == null)
throw new IllegalArgumentException("No provider register with name: " + name);
return p.newService();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Service s = newInstance();
Service sCustomer = newInstance("customer");
}
}

浙公网安备 33010602011771号