Cerco pensieri sul seguente disegno. So che il design potrebbe essere molto più semplice se usi gli zoccoli. Ma volevo pensare a un design con classi POJO pure.
utente
string id;
string displayname;
finestra di chat
User user;
ChatManager room; //interface to access ChatRoom
readDeliveryReceipts boolean;
LinkedHashMap<id-userid, AcknowledgeMessage>messages;
Message currentMessage;
displayMessage(Message message);//Adds an entry to logs
acknowledgeMessage (String messageId);
acceptAcknowledgement(String messageId);
Messaggio → TextMessage, Video Message, Audio Message (ereditarietà)
-string id;
-DateTime timestamp;
-User user;
-string text;
AcknowledgeMessage (usa il pattern decorator) // Archivia i log dei messaggi
-Message msg;
-Type (ServerAccepted , SentToClient);
ChatManager // Una classe Adapter per interagire con ChatRoom
ChatRoom room;
sendMessage(Message message);
register(ChatWindow window);
deregister(ChatWindow window);
acknowledgeMessage(String messageId);
ChatRoom (sessione chat)
List<ChatWindow> chatWindows;
BlockedQueue<Messages> messagesToSend;
//Listener Pattern
register(ChatWindow window);
deregister(ChatWindow window);
receivingMessage(Message); //will add it to the Queue and send acknowledgement
//Listener Pattern
sendMessage(Message); //Will iterate all the chatwindows