Ich versuche ein Live-Benachrichtigungssystem zu implementieren (wie fb, xing, twitter ..). Daher habe ich vor dem Erstellen der Entitäten ein UML-Klassendiagramm erstellt. Die Vitrine ist die folgende:Live Benachrichtigungen UML Klassendiagramm
EDIT: Ich dachte, diesen Ansatz, und es scheint, als ob dies nicht der richtige ist. Lassen Sie uns das folgende Szenario überprüfen: Benutzer U fügt in Bild E von Event E einen Kommentar C hinzu. Wie man das richtig speichert, ich meine, EventNotification hat nur einen Verweis auf das Ereignis E, aber nicht auf I und C. Daher müsste ich ein erstellen "EventImageNotification" Klasse auch und das wäre ein Durcheinander. Wäre es eine bessere Lösung, nur eine "Notification" -Klasse zu haben und ein "Metadaten" -Feld hinzuzufügen, das Verweise auf alle beteiligten Felder speichert?
(Ich verwende eine OR-Mapper Beziehungen später zu implementieren).
[1] Ein Benutzer kann Ereignisse erstellen, z. "Silvesterparty 2015". (OneToMany). Dieses Ereignis verfügt über ein Dashboard, auf dem Benutzer Updates abonnieren können, wenn der Ersteller etwas zu diesem Ereignis (ManyToMany) veröffentlicht.
[2] Wenn ein Benutzer etwas im Dashboard der Veranstaltung veröffentlicht, sollten abonnierte Benutzer eine Benachrichtigung erhalten. Daher habe ich die EventNotification-Klasse erstellt. Beziehung zwischen Benutzer und EventNotification ist ManyToMany.
[3] Um es sauber zu halten, habe ich eine AbstractNotification-Klasse erstellt, die sich auf einen Benachrichtigungstyp bezieht. Ein Benachrichtigungstyp ist etwas wie name = "EventPost" und template = "Benutzer Benutzer hat etwas neues auf Ereignis __event gepostet".
[4] Die abstrakte Klasse NotificationConnector enthält Felder für die Mapping-Klasse zwischen EventNotification und User (UserEventNotification). Ich habe sie erstellt, um sie in der Zukunft leicht zu erweitern, z. Ein Benutzer kann Bücher erstellen, die auch Ereignisse usw. auslösen. Dann müsste ich eine "BookNotification" - und eine "UserBookNotification" -Klasse erstellen, um Benachrichtigungen für diese neue Entität zu speichern.
Ist dieser Ansatz ein guter oder völlig durcheinander? Bitte sagen Sie mir Ihre Ideen zu diesem Diagramm:
(Die Pfeile zum Erstellen von Verknüpfungen sollten normale Linien gewesen sein, das Werkzeug, das ich verwendet habe, konnte das einfach nicht tun).
Update: Ich verwende jetzt ein Metadatenfeld in Kombination mit einem NotificationType und es funktioniert für alle Arten von geschachtelten Benachrichtigungen. – user3746259