2016-08-12 87 views
-1

我遇到了一個不好的做法 - 在兩個服務之間創建了一個依賴關係,我不確定重構和改進它的最佳策略是什麼。用Java和Spring重構服務之間的依賴關係

這是我的例子,我有一個PurchaseServiceImpl實現我的PurchaseService接口,並在此PurchaseServiceImpl我注入我CustomerServiceProductService

@Service 
public class PurchaseServiceImpl implements PurchaseService { 
    // TODO Refactor this dependency between services 
    @Inject 
    private CustomerService customerService; 
    // TODO Refactor this dependency between services 
    @Inject 
    private ProductService productService; 

這裏我用customerService獲取一個客戶和productService獲取產品分別來自後端:

private Customer getCustomer(long id) throws BackendException { 
    try { 
     return customerService.getCustomer(id); 
    } catch (CustomerNotFoundException e) { 
     throw new BackendException(e); 
    } 
} 

private ProductDetails getProductDetails(long id) throws BackendException { 
    try { 
     return productService.getProductDetails(id); 
    } catch (ProductNotFoundException e) { 
     throw new BackendException(e); 
    } 
} 

什麼是你最好的策略來攻擊這種做法?目前這很容易,但感覺像債務需要相當注意。

+0

你有什麼做法有問題嗎? –

+0

我不想在服務之間創建依賴關係(就像我上面所做的那樣)。 – lapadets

+0

爲什麼你認爲這是一種不好的做法? – Jesper

回答

0

我沒有看到一個服務(購買服務)使用兩個其他服務的問題。如果兩個服務具有循環依賴性,即彼此使用,那將是有問題的。

+0

嗯,我正在考慮引入Facade,以便我的UI通過Facade與服務進行通信,而不是直接進行通信。目前爲止沒有循環依賴,我不認爲我會遇到這個問題。我只收集來自更有經驗的開發人員或具有類似經歷的開發人員的意見,我想知道他們是如何處理這些問題的。 – lapadets

+0

有一個門面是一個很好的設計理念:-)但我見過很多應用程序,其中服務使用其他服務。如上所述,只要沒有循環依賴關係,就可以正常工作。 – Guenther