Sto cercando di creare una piattaforma di instant messaging di base. Ho tre tipi immutabili di base e ognuno di essi ha una sottoclasse per trattare con CRUD (per scopi SRP, separando la classe dalla logica del database).
Conversazione:
public class Conversation
{
public uint Id { get; private set; }
public List<Participant> Participants { get; private set; }
public List<Message> Messages { get; private set; }
/* Some extra properties */
public Conversation(uint id, List<Participant> participants, List<Message> messages)
{
Id = id;
Participants = participants;
Messages = messages;
}
public static class CRUD
{
static void Create(...) {}
static void Read(...) {}
static void Update(...) {}
static void Delete(...) {}
}
}
Messaggio:
public class Message
{
public uint Id { get; private set; }
public Conversation Conversation { get; private set; }
public Participant Sender { get; private set; }
public DateTime SendingTime { get; private set; }
public string Content { get; private set; }
/* Constructor */
/* CRUD */
}
Partecipante:
public class Participant
{
public Conversation Conversation { get; private set; }
public Employee Employee { get; private set; }
/* Constructor */
/* CRUD */
}
Ho pensato che Message.CRUD.Read(...)
dovrebbe ricevere i messaggi dal database e Participant.CRUD.Read(...)
dovrebbe ottenere il partecipante dal database. Ma poi Che cosa dovrebbe Conversation.CRUD.Read(...)
leggere e cosa dovrebbe restituire?
Voglio dire, dovrebbe ottenere dal database tutte le informazioni sulla conversazione che non ha una rappresentazione di classe nel codice (cioè non Message
e Participant
), e poi, dovrebbe restituire un oggetto non completo di Conversation
con qualche null
s o dovrebbe fare qualcos'altro? Qual è la migliore pratica qui? C'è qualche?