Saya ingin menulis aplikasi seperti e-commerce.
Dan Anda tahu bahwa dalam aplikasi yang serupa produk bisa memiliki sifat dan fitur yang berbeda. Untuk mensimulasikan kesempatan seperti itu, saya telah membuat entitas model domain berikut:
Kategori - ini adalah sesuatu seperti "elektronik> komputer" yaitu jenis produk. Сategori berisi daftar properti (Daftar <Properti>).
Properti - entitas independen yang berisi nama, satuan ukuran, tipe data. Misalnya "nama", "berat", "ukuran layar". Properti yang sama dapat memiliki produk yang berbeda.
Produk - hanya berisi nama dan daftar nilai yang berkaitan dengan properti. Nilai adalah objek yang hanya berisi bidang nilai dan id bidang properti.
Saya awalnya memutuskan untuk membuat Kategori seperti agregat tunggal dalam skema ini karena misalnya ketika saya menambahkan produk baru, saya perlu mengetahui semua data yang terkait dengan kategori saat ini termasuk properti yang terkait dengan kategori saat ini ( kategori. Tambahkan Produk Baru (produk) ). Tapi apa yang harus saya lakukan ketika saya hanya perlu menambahkan properti baru yang bukan milik kategori apa pun. Sebagai contoh, saya tidak dapat melakukan kategori ini. Tambahkan Properti (properti) karena ia dengan jelas mengatakan bahwa kami menambahkan properti ke kategori tertentu.
Oke langkah selanjutnya saya memutuskan Properti terpisah menjadi agregat terpisah tetapi kemudian akan menjadi daftar dengan entitas sederhana.
Tentu saja saya dapat membuat sesuatu seperti PropertyAggregate agar tetap di dalam daftar properti dan aturan bisnis tetapi ketika saya menambahkan produk, saya harus memiliki di dalam kategori seluruh daftar properti yang termasuk dalam kategori ini untuk memeriksa invarian. Tetapi saya juga sadar bahwa menjaga tautan di dalam agregat pada agregat lain adalah praktik yang buruk.
Apa saja pilihan untuk mendesain kasing bisnis ini?