Mevcut bir uygulamanın greenfield modülü için DDD benzeri bir yaklaşım kullanıyorum; mimari nedeniyle% 100 DDD değil, ancak bazı DDD konseptlerini kullanmaya çalışıyorum. Ben sınırlı bir bağlam (O uygun terim olduğunu düşünüyorum - Hala DDD hakkında öğreniyorum) sahip iki varlıkları oluşan: Conversation
ve Message
. Konuşma, bir ileti dizisi konuşma olmadan mevcut olmadığından ve sistemdeki tüm iletiler ileti dizisinin bir parçası olduğu için köküdür.
ConversationRepository
Veritabanında Konuşmaları bulan bir sınıfım var (gerçekte bir Ağ Geçidi gibi olmasına rağmen, "Depo" terimini kullanıyorum); Bir Konuşma bulduğunda, ayrıca (Fabrikalar aracılığıyla) o Konuşma için bir mesaj listesi (bir özellik olarak açıktır) oluşturur. Bu, olayları ele almanın doğru yolu gibi görünüyor MessageRepository
; çünkü yalnızca bir Konuşma alındığında olduğu gibi , tam gelişmiş bir sınıfa ihtiyaç duyulmuyor gibi görünüyor.
Ancak, bir Mesajın kaydedilmesi söz konusu olduğunda, bu, Mesajın toplam kökü olduğu için, Konuşma Raporunun sorumluluğunda mıdır? Demek istediğim, ConversationRepository'de, AddMessage
parametre olarak bir Mesaj alan ve veritabanına kaydeden bir yöntemim olmalı mı? Yoksa Mesajları bulmak / kaydetmek için ayrı bir havuza mı ihtiyacım var? Mantıksal şey, Varlık başına bir depo gibi gözüküyor, ama aynı zamanda "Bağlam başına bir depo" da duydum.