Der beste Weg, diesen monolithischen Manager aufzubrechen, besteht darin, den Klassen gemäß OO-Prinzipien Verantwortlichkeiten zuzuweisen. Hier sind einige Vorschläge, die Ihnen sofort einfallen. Erwarte keine Perfektion, das ist nur von meinem Kopf.
Ich sehe keine Notwendigkeit für einen „Manager“ Klasse, obwohl ich es für notwendig, tun alle Instanzen der Channel
Klasse und alle Instanzen der User
Klasse zu verfolgen. Vielleicht Dies könnte mit Klassenstatik innerhalb jeder Klasse getan werden. (Diese Indizes können in UML Qualifikations modelliert werden, die wie Hash-Karten Art von Arbeit. Die Channels
und Users
wirklich nicht gerade Zahlen müssen! Diese Zahlen sind nur eine von vielen Möglichkeiten, dies zu codieren.
Jeder Instanz der Klasse User
kann einen Befehlskanal verwenden, um mit einer Person zu kommunizieren.Wenn eine Person die Instanz User
anfordert, einem Kanal beizutreten, kann sie eine Instanz einer Private Channel
erstellen, die einen Kanal pro Kanal verwaltet, der privat ist eine Person, dann fragen Sie eine Instanz der angeforderten Channel
für die Erlaubnis, es zu akzeptieren.Das Private Channel
könnte Methoden zu poll()
, read()
undhaben.
Eine Instanz einer Channel
Klasse könnte für die Ankündigung von Dingen verantwortlich sein, wenn ein User
beitritt oder verlässt. Jede Instanz einer Channel
-Klasse sollte für das Abrufen der verbundenen Instanzen, das Lesen von Nachrichten/Befehlen und das Ergreifen von Maßnahmen verantwortlich sein, z. B. das Wiederholen einer Nachricht an alle anderen Private Channels
.
Das ist nur von der Spitze meines Kopfes. Wenn ich mir etwas Zeit nehmen würde, um darüber nachzudenken, könnte ich einige potenzielle Probleme oder Optimierungen sehen, die ich machen könnte, aber hoffentlich gibt das Ihnen einige Ideen, wie man einen "Manager" -Monolith nach OO-Prinzipien aufteilt.
scheint vernünftig. Top-Level-Manager-Klassen neigen dazu, ein bisschen hässlich zu sein. –
Ja, ich fragte auf Reddit und bekam leider die gleiche Antwort. Ich hoffte nur, dass ich etwas tun konnte, um es aufzuräumen. –
nichts ist offensichtlich falsch mit den Diagrammen. code es auf und suche nach Möglichkeiten zur Umgestaltung. –