Saya ingin tahu yang berikut: misalkan kita sedang membangun sistem di mana perlu ada beberapa fungsi penyaringan untuk mencari beberapa entitas. Misalnya, orang mungkin ingin menerapkan pemfilteran ke tabel yang mencantumkan entitas untuk menemukan sesuatu, atau menggunakannya untuk menghasilkan laporan pada perangkat yang difilter, apa pun.
Intinya adalah: kita perlu memiliki logika penyaringan di suatu tempat. Salah satu cara buruk untuk melakukan ini adalah dengan mereplikasi logika penyaringan di mana diperlukan. Saya pernah melakukannya sekali dan itu adalah satu ide yang mengerikan.
Di sisi lain, saya percaya harus ada metode seperti yang Filter(FilteringOptions filteringOptions)
dirancang untuk melakukan operasi penyaringan dan mengembalikan daftar entitas yang difilter.
Sekarang, IMHO, logika penyaringan adalah jenis logika bisnis. Para pakar bisnis adalah orang-orang yang tahu bagaimana penyaringan terjadi, hal-hal apa saja yang disaring dan bagaimana caranya. Karena itu, saya percaya logika penyaringan harus terletak di lapisan domain.
Saya telah menemukan dua opsi untuk melakukan ini: menanamkan metode pemfilteran dalam repositori yang sesuai untuk entitas tertentu, atau yang lain, membuat layanan domain seperti EntityNameSearchService
yang akan mengkonsumsi repositori untuk melakukan penyaringan.
Saya masih bingung mana yang akan menjadi cara yang lebih baik. Jadi, jika saya mencoba menggunakan DDD dengan benar, di mana logika penyaringan ini seharusnya? Di repositori atau di layanan terpisah?
Get*
metode generik dan memperkenalkan filter yang berbeda atau yang ditentukan pengguna di lapisan layanan. Keputusan sebagian besar terserah Anda.