Kami mencoba untuk memindahkan data dari lapisan Layanan kami ke lapisan Domain kami menggunakan pendekatan DDD. Saat ini kami memiliki banyak logika bisnis dalam layanan kami, yang tersebar di mana-mana dan tidak mendapat manfaat dari warisan.
Kami memiliki kelas Domain sentral yang merupakan fokus dari sebagian besar pekerjaan kami - Perdagangan. Objek Perdagangan akan tahu cara menentukan harga itu sendiri, cara memperkirakan risiko, memvalidasinya sendiri, dll. Kita kemudian dapat mengganti kondisional dengan polimorfisme. Contoh: SimpleTrade akan memberi harga sendiri dengan satu cara, tetapi ComplexTrade akan memberi harga sendiri dengan cara lain.
Namun, kami khawatir ini akan menggembungkan kelas Dagang. Ini benar-benar harus bertanggung jawab atas pemrosesan sendiri tetapi ukuran kelas akan meningkat secara eksponensial karena lebih banyak fitur ditambahkan.
Jadi kita punya pilihan:
- Masukkan logika pemrosesan di kelas Perdagangan. Pemrosesan logika sekarang bersifat polimorfik berdasarkan jenis perdagangan, tetapi kelas Perdagangan sekarang memiliki banyak tanggung jawab (harga, risiko, dll.) Dan besar
- Masukkan logika pemrosesan ke kelas lain seperti TradePricingService. Tidak lagi polimorfik dengan pohon warisan Perdagangan, tetapi kelas lebih kecil dan lebih mudah untuk diuji.
Apa yang akan menjadi pendekatan yang disarankan?