public interface ServiceProcessor {
void processRequest(ServiceRequest request);
}
public class UserServiceProcessor implements ServiceProcessor {
@Override
public void processRequest(ServiceRequest request) {
// ...
}
}
public class OrderServiceProcessor implements ServiceProcessor {
@Override
public void processRequest(ServiceRequest request) {
// ...
}
}
public class ServiceProcessorConfig {
private Map<String, ServiceProcessor> processorMap;
public void setProcessorMap(Map<String, ServiceProcessor> processorMap) {
this.processorMap = processorMap;
}
public ServiceProcessor getProcessorByType(String type) {
return processorMap.get(type);
}
}
public class ServiceClient {
private ServiceProcessorConfig processorConfig;
public void setProcessorConfig(ServiceProcessorConfig processorConfig) {
this.processorConfig = processorConfig;
}
public void processServiceRequest(ServiceRequest request) {
ServiceProcessor processor = processorConfig.getProcessorByType(request.getType());
if (processor != null) {
processor.processRequest(request);
} else {
// ...
}
}
}