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 Post
und Tag
.
Post
kümmert sich um das Erstellen von Posts, das Löschen von Posts, das Aktualisieren von Posts usw.
Tag
kü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 Post
könnte die Klasse eine Funktion haben, die a Tag
als Parameter verwendet und es dann in einer Liste von Tags speichert. Andererseits Tag
könnte die Klasse eine Funktion haben, die a Post
als Parameter verwendet und das Tag
mit 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?