我工作的一个Spring 2.0的WebService,这需要调用一个传统服务的多种方法,基于WebService的请求的属性之一中的一个。我不想在我的@endpoint中写入if/else检查来实现此目的。我应该使用什么类型的设计模式来使其更加清洁和可维护,以便在需要支持新订单类型(请参阅下面的示例代码)时,我不需要添加其他的其他块。呼叫在同一服务的多个方法从春天的WebService
@Endpoint
public class OrderServiceEndPoint {
@Autowired
private OrderLegacyService orderService;
@PayloadRoot
public @ResponsePayload OrderResponse processRequest(
@RequestPayload OrderRequest request) {
if ("Create".equals(request.type)) {
return orderService.createOrder(request);
} else if ("Modify".equals(request.type)) {
return orderService.modifyOrder(request);
} else if ("Return".equals(request.type)) {
return orderService.returnOrder(request);
} else if ("Replace".equals(request.type)) {
return orderService.replaceOrder(request);
} else {
throw new RequestNotSupportedException();
}
}
我已经使用org.springframework.beans.factory.config.ServiceLocatorFactoryBean实现在那里我有一个以上的实施同样的服务,就像一个CreateOrderService,ModifyOrderService,ReplaceOrderService等,但在案件工厂模式在这种情况下,我必须调用同一服务的多个方法。我现在无法更改旧版服务接口,因为它已被其他Web应用程序占用。
我可能会将该代码放入适配器类(例如:OrderLegacyServiceAdapter)中,以便如果需要在另一个方法上再次调用它时,我不必重复自己 – gerrytan 2013-04-25 05:50:57