將所有業務邏輯集中在一個地方帶來各種好處。它使你的邏輯變得乾淨而且易於調試。但是,我覺得在某些情況下它不能很好地擴展。什麼時候有服務層沒有意義?
例如,
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);
....
}
正如你可以看到,這是荒謬的,因爲有搜索變量可能的這麼多的組合,更何況整理,可能會出現在圖片中的分頁變量。
如果我的應用程序如此靈活以至於對於給定的「資源」,用戶可以過濾任何字段,按任何排序。我不應該完全跳過服務層嗎?
我曾嘗試編寫一個「通用」服務層,這在靜態類型語言中並不容易。另外,如果你的服務層現在讓所有事情都完成了,那麼沒有任何意義。