Apakah DDD-Lite bahasa pola untuk injeksi ketergantungan?

17

Saya menemukan pembicaraan Greg Young 7 Alasan mengapa Proyek DDD Gagal di mana ia menyebutkan sesuatu yang ia sebut DDD-Lite pada 7:20.

Meringkas, ia pada dasarnya mengatakan beberapa menggunakan DDD sebagai bahasa pola (entitas, repositori, objek nilai, layanan, dll) tanpa melakukan hal lain yang terkait dengan DDD. Dia mendalilkan 60% atau lebih dari model domain di .Net adalah DDD-Lite. Menurutnya DDD-Lite pada dasarnya membangun bahasa di sekitar injeksi ketergantungan, sesuatu yang tidak perlu Anda lakukan. Dia mengatakan apakah melakukan DDD sepenuhnya atau melakukan sesuatu yang lebih sederhana. Kalau tidak, ia mengklaim seseorang mengedepankan semua pekerjaan ini dalam membangun abstraksi yang baik, tetapi tanpa manfaat nyata.

Saya harus mengakui bahwa saya tidak tahu sebanyak mungkin tentang DDD, dan belum mencoba menggunakannya. Saya juga belum membaca buku Eric Evan. Saya jauh lebih tertarik pada Ketergantungan Injeksi dan banyak, banyak buku dan blog tentang hal ini menggunakan istilah dan konsep referensi dari buku Eric Evans DDD. Di sinilah saya telah terpapar konsep-konsep DDD. Buku yang telah saya baca yang melakukan ini termasuk:

  • Ketergantungan Injeksi dalam. NET
  • Microsoft .Net: Merancang Aplikasi untuk Perusahaan
  • Pengembangan Aplikasi Brownfield di .NET

Jika seseorang ingin melakukan Dependency Injection, apa alternatif yang lebih sederhana daripada melakukan "DDD-Lite?" Sepertinya saya membangun abstraksi yang baik cukup berguna terlepas dari apakah seseorang menggunakan konsep dari DDD dengan cara "DDD-Lite". (lihat posting blog Mark Seemann: Antarmuka bukan abstraksi , dan Menuju abstraksi yang lebih baik ). Saya sulit percaya bahwa semua orang yang melakukan Injeksi Ketergantungan kebetulan juga melakukan (atau perlu melakukan) DDD penuh baku. Apakah saya entah bagaimana salah mengerti argumen Greg Young tentang DDD-Lite?

Mat
sumber

Jawaban:

15

Ketergantungan Injeksi dan DDD adalah dua konsep terpisah. Melakukan Injeksi Ketergantungan tidak perlu melakukan DDD juga DDD tidak membutuhkan Injeksi Ketergantungan.

Banyak proyek DDD gagal karena mereka memilih pola tetapi mengabaikan proses di belakang DDD. Mereka tidak meluangkan waktu untuk mengambil aturan bisnis. Mereka tidak berkonsentrasi pada model domain dan abstraksi yang cermat. Mereka tidak membangun Bahasa di mana-mana.

Singkatnya: Saya kira itu kesalahpahaman

saintlama
sumber
4
+1 Pola-pola yang dijelaskan dalam buku Evans masih berharga dalam konteks yang jauh lebih luas - selama orang memahami bahwa menerapkannya secara terpisah tidak menjadikannya DDD.
Mark Seemann
1
Ya saya menyadari DI! = DDD. @ Markarkeemann, jadi argumen Greg tampaknya adalah bahwa orang mengatakan mereka sedang melakukan DDD ketika mereka tidak melakukannya. Oke saya mengerti. Tetapi dia juga berpendapat bahwa menggunakan abstraksi seperti yang ditemukan di DDD (agregat, repositori, entitas domain, objek nilai, layanan, dll) tidak diperlukan jika itu digunakan hanya untuk mendukung arsitektur injeksi yang digantung. Itulah bagian yang tidak saya dapatkan (ada apa dengan itu). Mungkin itulah argumen orang bodoh , karena menggunakan hal-hal seperti itu tidak hanya untuk "membangun bahasa di sekitar injeksi ketergantungan".
Matt
3
Greg sebagian benar: pola-pola khusus dalam DDD tidak secara khusus terkait dengan DI. Namun, dalam buku saya, saya mengambil beberapa terminologi, terutama definisi Entity vs Value Object vs Service karena penting untuk memahami apa yang harus disuntikkan di mana. Namun, kedua terminologi ini serta pola-pola lain seperti Repositori dan Pabrik jauh lebih tua dari buku DDD, jadi mengatakan bahwa hal-hal seperti itu tidak perlu di luar DDD terdengar salah bagi saya. Ini mungkin tergantung pada bagaimana Anda benar-benar mendefinisikan DDD.
Mark Seemann
2

Saya yakin Greg mengacu pada aplikasi sederhana jika bagian dari pola Desain Domain-Driven bukannya seluruh pendekatan DDD. Istilah DDD-Lite secara implisit merujuk pada buku http://www.infoq.com/minibooks/domain-driven-design-quickly yang dulu populer di kalangan pemula DDD, tetapi banyak yang melewatkan seluruh gambar dengan berfokus hanya pada pola desain pemodelan lokal.

Meskipun Injeksi Ketergantungan dianggap sebagai hal yang baik, tidak ada korelasi kuat antara DDD dan DI.

ZioBrando
sumber