我工作的一個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