Betrachten Sie dieses Beispiel:
Ich habe eine Website. Es ermöglicht Benutzern, Beiträge zu verfassen (kann alles sein) und Tags hinzuzufügen, die den Beitrag beschreiben. Im Code habe ich zwei Klassen, die den Beitrag und die Tags darstellen. Nennen wir diese Klassen Postund Tag.
Postkümmert sich um das Erstellen von Posts, das Löschen von Posts, das Aktualisieren von Posts usw.
Tagkümmert sich um das Erstellen von Tags, das Löschen von Tags, das Aktualisieren von Tags usw.
Es fehlt eine Operation. Das Verknüpfen von Tags mit Posts. Ich habe Probleme damit, wer diese Operation durchführen soll. Es könnte in jede Klasse gleich gut passen.
Einerseits Postkönnte die Klasse eine Funktion haben, die a Tagals Parameter verwendet und es dann in einer Liste von Tags speichert. Andererseits Tagkönnte die Klasse eine Funktion haben, die a Postals Parameter verwendet und das Tagmit dem verknüpft Post.
Das Obige ist nur ein Beispiel für mein Problem. Ich stoße tatsächlich auf mehrere Klassen, die alle ähnlich sind. Es könnte in beide gleich gut passen. Welche Konventionen oder Designstile gibt es, um dieses Problem zu lösen, ohne die Funktionalität tatsächlich in beide Klassen einzuteilen? Ich gehe davon aus, dass es etwas anderes geben muss, als nur eines auszuwählen?
Vielleicht ist es die richtige Antwort, es in beide Klassen einzuteilen?