Ketidaktahuan Ketekunan adalah penerapan prinsip tanggung jawab tunggal, yang dalam praktiknya berarti bahwa Objek Domain ( DO ) tidak boleh berisi kode yang terkait dengan kegigihan, alih-alih hanya berisi logika domain.
a) Saya menganggap ini berarti bahwa kode yang menghubungi lapisan bawah (yaitu lapisan persistensi) hidup di luar model domain di kelas lain ( OC ) dari lapisan logika bisnis?
b) Jika asumsi saya di bawah a) benar, maka DO , katakanlah Customer
, tidak pernah berisi metode seperti GetCustomers
atau GetCustomerByID
?
c) Jika asumsi saya di bawah a) dan b) benar, dan dengan asumsi Customer
objek domain menggunakan lazy loading untuk beberapa propertinya, maka pada beberapa titik Customer
logika internal harus menghubungi OC , yang pada gilirannya mengambil data yang ditangguhkan. Tetapi jika Customer
perlu menghubungi OC untuk menerima data yang ditangguhkan, maka kami tidak dapat benar-benar mengklaim bahwa Objek Domain tidak mengandung logika yang terkait dengan kegigihan ?!
Terima kasih
REPLYING TO jkohlhepp
1) Saya berasumsi OrderProvider
dan CustomerProvider
kelas terdapat dalam lapisan logika bisnis?
2) Saya mengumpulkan dari balasan Anda bahwa asumsi saya di bawah b) benar?
3)
... Saya akan memeriksa untuk melihat apakah beberapa bidang pesanan pribadi telah diisi atau jika itu nol. Jika itu nol ...
Tetapi sejauh yang saya tahu, segera setelah kode domain perlu memeriksa apakah order
bidang pribadi telah diisi, dan jika tidak, menghubungi OrderProvider, kami sudah melanggar prinsip PI ?!
sumber
Anda hanya memiliki beberapa kelas wireup yang mengisi objek domain (katakanlah, sesuatu yang disebut "repositori"). Anda dapat menerapkan lazy loading atau apa pun jenis skema koherensi cache yang Anda inginkan dan objek domain tidak bijaksana. Anda memisahkan tanggung jawab untuk mengisi objek domain dari menjadi objek domain.
sumber