Bir uygulamaya e-ticaret gibi bir şey yazmak istiyorum.
Ve benzer uygulamalarda ürünlerin farklı özelliklere ve özelliklere sahip olabileceğini biliyorsunuz. Böyle bir fırsatı simüle etmek için aşağıdaki alan modeli varlıklarını oluşturdum:
Kategori - bu "elektronik> сomputers" gibi bir şey yani ürün türleri. Kategoriler, özelliklerin bir listesini içerir (Liste <Özellik>).
Mülkiyet - adını içeren bağımsız bir varlık, ölçü birimleri, veri türü. Örneğin "ad", "ağırlık", "ekran boyutu". Aynı mülkün farklı ürünleri olabilir.
Ürün - sadece özelliklerle ilgili değerlerin listesini ve adını içerir. Değer, özelliğin yalnızca değer alanını ve alan kimliğini içeren bir nesnedir.
Başlangıçta Kategori'yi bu şemada tek bir toplama gibi yapmaya karar verdim çünkü örneğin yeni ürün eklediğimde, geçerli kategoriyle ilgili özellikler ( category.AddNewProduct (ürün) ) dahil olmak üzere mevcut kategoriyle ilgili tüm verileri bilmem gerekiyor . Ancak, herhangi bir kategoriye ait olmayan yeni bir mülk eklemem gerektiğinde ne yapmalıyım. Örneğin, bu kategoriyi yapamıyorum.AddNewProperty (özellik) , özelliği belirli bir kategoriye eklediğimizi açıkça söylüyor.
Tamam sonraki adım ayrı Mülkiyet ayrı bir toplama karar verdi ama sonra basit varlıkları ile bir liste olacak.
Tabii ki özellik ve iş kuralları listesi içinde tutmak için PropertyAggregate gibi bir şey oluşturabilirim, ancak bir ürün eklediğimde, kategorinin içinde değişmeyenleri kontrol etmek için bu kategoriye ait özelliklerin tüm listesine sahip olmalıyım. Ama aynı zamanda, diğer agregalardaki toplamaların içindeki bağlantıların kötü bir uygulama olduğunun da farkındayım.
Bu iş vakasını tasarlamanın seçenekleri nelerdir?