Lassen Sie uns sagen, wenn Sie haben die Vererbung verwendet. Über einen Zeitraum haben Sie neue Attribute, die nur für Action und Ausgabe aber nicht Risiko sind. Wie gehst du damit um? Wenn Sie sie unter Eltern setzen, dann erbt Risk Sachen, die irrelevant sind (Liskov Substituon Prinzip klopft?). Wenn Sie dann in Aktion und Risiko getrennt setzen, dann brechen Sie DRY, den ersten Grund, warum Sie die Vererbung begonnen haben. Point ist Inherence für die Wiederverwendung ist schlecht. Wenn es kein "ist-a" gibt, dann benutze es besser nicht und wenn du Zweifel hast, gibt es kein echtes "ist-a".
Meine Präferenz
Es gibt auch andere Wege zur Erreichung DRY wie im folgenden Beispielcode gezeigt.Mit diesem Zusatz von neuen Eigenschaften mein ein anderer sein Common2, ist das Hinzufügen von neuen Verhalten CommonBehavior2, wenn sie nicht für alle 3 Klassen gelten; wenn sie dann ändern Sie einfach bestehende Gemeinsame und CommonBehavior
public class Common implements CommonBehavior
{
String Description;
String title;
public void f() {}
}
public interface CommonBehavior
{
void f();
}
public class Action implements CommonBehavior
{
private Common delegate;
pubic void f()
{
delegate.f();
}
}
auf eine ähnliche Frage auf meine Antwort Schauen Sie auch mit einem anderen Beispiel aus der Praxis Design pattern to add a new class
Vielen Dank für die Delegation und die gute Präsentation. Wie denkst du umgekehrt (siehe weiter, Aufgabe -> Thema). Die Frage ist, ist das "Fälligkeitsdatum" wirklich Teil der Aktion (Ihre Delegation) oder ein Artefakt des Workflows, das eine Rolle nicht im Umgang mit Action spielt, sondern nur im Workflow-Kontext eingebettet wird. – mtraut
Vielen Dank für so deutlich Delegate zeigt. Was ich für Action, Issue und Risk habe, ist in der Tat ein Satz von allgemeinem Verhalten. Mit dem Delegate-Ansatz wird die Funktionsweise der Klassen beim Lesen des Code-Beginns deutlich klarer. Bei dem folgenden Beispiel der "Aufgabe" kann Aktion eine Aufgabe sein, aber Risiko nicht. Die Absicht der Klassen wird sehr deutlich, wie Aktion ist jetzt: „Aktion implementiert CommonBehaviour, Aufgabe, MeetingIem“, wo Gefahr ist: „Risk implementiert CommonBehaviour, MeetingItem“. – poulenc
Ich bin froh, dass du es verstanden hast. Ich schlage vor, Sie auch durch meine Antwort gehen hier auf eine ähnliche Frage http://stackoverflow.com/questions/4512184/design-pattern-to-add-a-new-class/4512234#4512234 –