2015-12-14 101 views
1

將所有業務邏輯集中在一個地方帶來各種好處。它使你的邏輯變得乾淨而且易於調試。但是,我覺得在某些情況下它不能很好地擴展。什麼時候有服務層沒有意義?

例如,

class Book{ 
    String a, b......z; 
} 

我的書類有26場(A至Z)。對於單獨搜索,有2^26種可能的查詢方式。

如果我寫這樣的服務類(庫):

interface BookRepo{ 
    List<Book> findById(int id); 
    List<Book> findByA(String a); 
    List<Book> findTop10ByADescending(String a); 
    List<Book> findByBAndCAndDAnd....Z(String a, b, c,d, e....z); 
    .... 
} 

正如你可以看到,這是荒謬的,因爲有搜索變量可能的這麼多的組合,更何況整理,可能會出現在圖片中的分頁變量。

如果我的應用程序如此靈活以至於對於給定的「資源」,用戶可以過濾任何字段,按任何排序。我不應該完全跳過服務層嗎?

我曾嘗試編寫一個「通用」服務層,這在靜態類型語言中並不容易。另外,如果你的服務層現在讓所有事情都完成了,那麼沒有任何意義。

回答

1

你的問題並沒有真正與現有的vs缺少服務層相關。您的問題是由錯誤的數據結構和/或存儲庫設計引起的。

如果您想過濾26個字母的所有可能組合,那麼請考慮動態創建查詢和/或在信函和書籍之間建立多對多關係,而不是在圖書內部有26個字段。那麼你將有不變的和少量的儲存庫方法,你可以很容易地添加新的字母。

如果您的應用程序不需要服務層,那麼您不必添加它。但如果你沒有它並且你的應用程序增長,那麼很難發現它需要的時刻。相反,人們傾向於將服務邏輯放入控制器和/或存儲庫中。尤其是當你在一個團隊工作時

相關問題